public ResolveArrayCreation ( IType elementType, ResolveResult sizeArguments, ResolveResult initializerElements = null ) : ArrayCreateResolveResult | ||
elementType | IType | /// The array element type. /// Pass null to resolve an implicitly-typed array creation. /// |
sizeArguments | ResolveResult |
/// The size arguments.
/// The length of this array will be used as the number of dimensions of the array type.
/// The resolver may mutate this array to wrap elements in |
initializerElements | ResolveResult |
/// The initializer elements. May be null if no array initializer was specified.
/// The resolver may mutate this array to wrap elements in |
Résultat | ArrayCreateResolveResult |
public ArrayCreateResolveResult ResolveArrayCreation(IType elementType, ResolveResult[] sizeArguments, ResolveResult[] initializerElements = null)
{
int dimensions = sizeArguments.Length;
if (dimensions == 0)
throw new ArgumentException("sizeArguments.Length must not be 0");
if (elementType == null) {
TypeInference typeInference = new TypeInference(compilation, conversions);
bool success;
elementType = typeInference.GetBestCommonType(initializerElements, out success);
}
IType arrayType = new ArrayType(compilation, elementType, dimensions);
AdjustArrayAccessArguments(sizeArguments);
if (initializerElements != null) {
for (int i = 0; i < initializerElements.Length; i++) {
initializerElements[i] = Convert(initializerElements[i], elementType);
}
}
return new ArrayCreateResolveResult(arrayType, sizeArguments, initializerElements);
}
#endregion
CSharpResolver::ResolveArrayCreation ( IType elementType, int sizeArguments, ResolveResult initializerElements = null ) : ArrayCreateResolveResult |
public override ResolveResult Resolve(CSharpResolver resolver) { ResolveResult[] elements = new ResolveResult[arrayElements.Count]; for (int i = 0; i < elements.Length; i++) { elements[i] = arrayElements[i].Resolve(resolver); } int[] sizeArguments = { elements.Length }; if (elementType != null) { return resolver.ResolveArrayCreation(elementType.Resolve(resolver.CurrentTypeResolveContext), sizeArguments, elements); } else { return resolver.ResolveArrayCreation(null, sizeArguments, elements); } }