ICSharpCode.NRefactory.CSharp.Resolver.CSharpResolver.ResolveArrayCreation C# (CSharp) Method

ResolveArrayCreation() public method

Resolves an array creation.
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 s! ///
initializerElements ResolveResult /// The initializer elements. May be null if no array initializer was specified. /// The resolver may mutate this array to wrap elements in s! ///
return 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

Same methods

CSharpResolver::ResolveArrayCreation ( IType elementType, int sizeArguments, ResolveResult initializerElements = null ) : ArrayCreateResolveResult

Usage Example

Esempio n. 1
0
 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);
     }
 }
CSharpResolver