Type.MakeArrayType Method (Int32)
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Returns a Type object representing an array of the current type, with the specified number of dimensions.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- rank
- Type: System.Int32
The number of dimensions for the array. This number must be less than or equal to 32.
Return Value
Type: System.TypeA Type object representing an array of the current type, with the specified number of dimensions.
| Exception | Condition |
|---|---|
| IndexOutOfRangeException | rank is invalid. For example, 0 or negative. |
| NotSupportedException | The invoked method is not supported in the base class. |
| TypeLoadException | The current type is a ByRef type. That is, Type.IsByRef returns true. -or- rank is greater than 32. |
The MakeArrayType method provides a way to generate array types whose element types are computed at run time.
Note: |
|---|
The common language runtime makes a distinction between vectors (that is, one-dimensional arrays that are always zero-based) and multidimensional arrays. A vector, which always has only one dimension, is not the same as a multidimensional array that happens to have only one dimension. You cannot use this method overload to create a vector type; if rank is 1, this method overload returns a multidimensional array type that happens to have one dimension. Use the MakeArrayType method overload to create vector types. |
The following code example creates array, ref (ByRef in Visual Basic), and pointer types for the Test class.
Note: |
|---|
To run this example, see Building examples that have static TextBlock controls for Windows Phone 8. |
Imports System.Reflection Public Class Example Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock) ' Create a Type object that represents a one-dimensional ' array of Example objects. Dim t As Type = GetType(Example).MakeArrayType() outputBlock.Text &= vbCrLf & "Array of Example: " & t.ToString() & vbCrLf ' Create a Type object that represents a two-dimensional ' array of Example objects. t = GetType(Example).MakeArrayType(2) outputBlock.Text &= vbCrLf & "Two-dimensional array of Example: " & t.ToString() & vbCrLf ' Demonstrate an exception when an invalid array rank is ' specified. Try t = GetType(Example).MakeArrayType(-1) Catch ex As Exception outputBlock.Text &= vbCrLf & ex.ToString() & vbCrLf End Try ' Create a Type object that represents a ByRef parameter ' of type Example. t = GetType(Example).MakeByRefType() outputBlock.Text &= vbCrLf & "ByRef Example: " & t.ToString() & vbCrLf ' Get a Type object representing the Example class, a ' MethodInfo representing the "Test" method, a ParameterInfo ' representing the parameter of type Example, and finally ' a Type object representing the type of this ByRef parameter. ' Compare this Type object with the Type object created using ' MakeByRefType. Dim t2 As Type = GetType(Example) Dim mi As MethodInfo = t2.GetMethod("Test") Dim pi As ParameterInfo = mi.GetParameters()(0) Dim pt As Type = pi.ParameterType outputBlock.Text &= "Are the ByRef types equal? " & (t Is pt) & vbCrLf ' Create a Type object that represents a pointer to an ' Example object. t = GetType(Example).MakePointerType() outputBlock.Text &= vbCrLf & "Pointer to Example: " & t.ToString() & vbCrLf End Sub ' A sample method with a ByRef parameter. ' Public Sub Test(ByRef e As Example) End Sub End Class ' This example produces output similar to the following: ' 'Array of Example: SilverlightApplication.Example[] ' 'Two-dimensional array of Example: SilverlightApplication.Example[,] ' 'System.IndexOutOfRangeException: Index was outside the bounds of the array. ' at System.RuntimeType.MakeArrayType(Int32 rank) in c:\vbl\ndp\clr\src\BCL\System\RtType.cs:line 2999 ' at SilverlightApplication.Example.Demo(TextBlock outputBlock) ' 'ByRef Example: SilverlightApplication.Example& 'Are the ByRef types equal? True ' 'Pointer to Example: SilverlightApplication.Example*
Note: