public IType MakeArray(IType type, ArrayDimensionCollection dim) { if (dim == null) { dim = ArrayDimensionCollection.Single; } var dimensionString = dim.ToString(); string key = BuildKey(type, dimensionString); return(Make(key, () => new ArrayType(type, dim))); }
public static string Format(ArrayDimensionCollection dims, bool sig) { var sb = new StringBuilder(); int n = dims.Count; if (sig) { if (n == 0) { return("_array"); } sb.Append("_" + n + "D_array"); if (!AllDefaults(dims)) { for (int i = 0; i < n; ++i) { if (i > 0) { sb.Append('_'); } var d = dims[i]; sb.Append(ArrayDimension.Format(d.LowerBound, d.UpperBound, true)); } } } else { sb.Append('['); for (int i = 0; i < n; ++i) { if (i > 0) { sb.Append(','); } var d = dims[i]; sb.Append(ArrayDimension.Format(d.LowerBound, d.UpperBound, false)); } sb.Append(']'); } return(sb.ToString()); }
public ArrayType(IType elementType, ArrayDimensionCollection dim) : base(elementType) { _arrayDimensions = dim; }
public ArrayType(IType elementType) : base(elementType) { _arrayDimensions = ArrayDimensionCollection.Single; }