Type.MakeArrayType Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt ein Type-Objekt zurück, das ein Array des aktuellen Typs darstellt.
Überlädt
MakeArrayType() |
Gibt ein Type-Objekt zurück, das ein eindimensionales Array vom aktuellen Typ mit einer unteren Grenze von 0 (null) darstellt. |
MakeArrayType(Int32) |
Gibt ein Type-Objekt zurück, das ein Array vom aktuellen Typ mit der angegebenen Anzahl von Dimensionen darstellt. |
Beispiele
Im folgenden Codebeispiel werden Arraytypen ref
(ByRef
in Visual Basic) und Zeigertypen für die Test
-Klasse erstellt.
using namespace System;
using namespace System::Reflection;
public ref class Example
{
public:
static void Main()
{
// Create a Type object that represents a one-dimensional
// array of Example objects.
Type^ t = Example::typeid->MakeArrayType();
Console::WriteLine( L"\r\nArray of Example: {0}", t );
// Create a Type object that represents a two-dimensional
// array of Example objects.
t = Example::typeid->MakeArrayType( 2 );
Console::WriteLine( L"\r\nTwo-dimensional array of Example: {0}", t );
// Demonstrate an exception when an invalid array rank is
// specified.
try
{
t = Example::typeid->MakeArrayType( -1 );
}
catch ( Exception^ ex )
{
Console::WriteLine( L"\r\n{0}", ex );
}
// Create a Type object that represents a ByRef parameter
// of type Example.
t = Example::typeid->MakeByRefType();
Console::WriteLine( L"\r\nByRef Example: {0}", t );
// 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.
Type^ t2 = Example::typeid;
MethodInfo^ mi = t2->GetMethod( L"Test" );
ParameterInfo^ pi = mi->GetParameters()[ 0 ];
Type^ pt = pi->ParameterType;
Console::WriteLine( L"Are the ByRef types equal? {0}", (t == pt) );
// Create a Type object that represents a pointer to an
// Example object.
t = Example::typeid->MakePointerType();
Console::WriteLine( L"\r\nPointer to Example: {0}", t );
}
// A sample method with a ByRef parameter.
//
void Test( interior_ptr<Example^> /*e*/ )
{
}
};
int main()
{
Example::Main();
}
/* This example produces output similar to the following:
Array of Example: Example[]
Two-dimensional array of Example: 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 Example.Main()
ByRef Example: Example&
Are the ByRef types equal? True
Pointer to Example: Example*
*/
using System;
using System.Reflection;
public class Example
{
public static void Main()
{
// Create a Type object that represents a one-dimensional
// array of Example objects.
Type t = typeof(Example).MakeArrayType();
Console.WriteLine("\r\nArray of Example: {0}", t);
// Create a Type object that represents a two-dimensional
// array of Example objects.
t = typeof(Example).MakeArrayType(2);
Console.WriteLine("\r\nTwo-dimensional array of Example: {0}", t);
// Demonstrate an exception when an invalid array rank is
// specified.
try
{
t = typeof(Example).MakeArrayType(-1);
}
catch(Exception ex)
{
Console.WriteLine("\r\n{0}", ex);
}
// Create a Type object that represents a ByRef parameter
// of type Example.
t = typeof(Example).MakeByRefType();
Console.WriteLine("\r\nByRef Example: {0}", t);
// 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.
Type t2 = typeof(Example);
MethodInfo mi = t2.GetMethod("Test");
ParameterInfo pi = mi.GetParameters()[0];
Type pt = pi.ParameterType;
Console.WriteLine("Are the ByRef types equal? {0}", (t == pt));
// Create a Type object that represents a pointer to an
// Example object.
t = typeof(Example).MakePointerType();
Console.WriteLine("\r\nPointer to Example: {0}", t);
}
// A sample method with a ByRef parameter.
//
public void Test(ref Example e)
{
}
}
/* This example produces output similar to the following:
Array of Example: Example[]
Two-dimensional array of Example: 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 Example.Main()
ByRef Example: Example&
Are the ByRef types equal? True
Pointer to Example: Example*
*/
type Example() =
// A sample method with a ByRef parameter.
member _.Test(e: Example byref) = ()
do
// Create a Type object that represents a one-dimensional
// array of Example objects.
let t = typeof<Example>.MakeArrayType()
printfn $"\r\nArray of Example: {t}"
// Create a Type object that represents a two-dimensional
// array of Example objects.
let t = typeof<Example>.MakeArrayType 2
printfn $"\r\nTwo-dimensional array of Example: {t}"
// Demonstrate an exception when an invalid array rank is
// specified.
try
let t = typeof<Example>.MakeArrayType -1
()
with ex ->
printfn $"\r\n{ex}"
// Create a Type object that represents a ByRef parameter
// of type Example.
let t = typeof<Example>.MakeByRefType()
printfn $"\r\nByRef Example: {t}"
// 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.
let t2 = typeof<Example>
let mi = t2.GetMethod "Test"
let pi = mi.GetParameters()[0]
let pt = pi.ParameterType
printfn $"Are the ByRef types equal? {t = pt}"
// Create a Type object that represents a pointer to an
// Example object.
let t = typeof<Example>.MakePointerType()
printfn $"\r\nPointer to Example: {t}"
(* This example produces output similar to the following:
Array of Example: Example[]
Two-dimensional array of Example: 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 Example.Main()
ByRef Example: Example&
Are the ByRef types equal? True
Pointer to Example: Example*
*)
Imports System.Reflection
Public Class Example
Public Shared Sub Main()
' Create a Type object that represents a one-dimensional
' array of Example objects.
Dim t As Type = GetType(Example).MakeArrayType()
Console.WriteLine(vbCrLf & "Array of Example: " & t.ToString())
' Create a Type object that represents a two-dimensional
' array of Example objects.
t = GetType(Example).MakeArrayType(2)
Console.WriteLine(vbCrLf & "Two-dimensional array of Example: " & t.ToString())
' Demonstrate an exception when an invalid array rank is
' specified.
Try
t = GetType(Example).MakeArrayType(-1)
Catch ex As Exception
Console.WriteLine(vbCrLf & ex.ToString())
End Try
' Create a Type object that represents a ByRef parameter
' of type Example.
t = GetType(Example).MakeByRefType()
Console.WriteLine(vbCrLf & "ByRef Example: " & t.ToString())
' 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
Console.WriteLine("Are the ByRef types equal? " & (t Is pt))
' Create a Type object that represents a pointer to an
' Example object.
t = GetType(Example).MakePointerType()
Console.WriteLine(vbCrLf & "Pointer to Example: " & t.ToString())
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: Example[]
'
'Two-dimensional array of Example: 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 Example.Main()
'
'ByRef Example: Example&
'Are the ByRef types equal? True
'
'Pointer to Example: Example*
MakeArrayType()
- Quelle:
- Type.cs
- Quelle:
- Type.cs
- Quelle:
- Type.cs
Gibt ein Type-Objekt zurück, das ein eindimensionales Array vom aktuellen Typ mit einer unteren Grenze von 0 (null) darstellt.
public:
abstract Type ^ MakeArrayType();
public:
virtual Type ^ MakeArrayType();
public abstract Type MakeArrayType ();
public virtual Type MakeArrayType ();
abstract member MakeArrayType : unit -> Type
abstract member MakeArrayType : unit -> Type
override this.MakeArrayType : unit -> Type
Public MustOverride Function MakeArrayType () As Type
Public Overridable Function MakeArrayType () As Type
Gibt zurück
Ein Type-Objekt, das ein eindimensionales Array vom aktuellen Typ mit einer unteren Grenze von 0 (null) darstellt.
Ausnahmen
Die aufgerufene Methode wird in der Basisklasse nicht unterstützt. Abgeleitete Klassen müssen eine Implementation angeben.
Der aktuelle Typ ist TypedReference.
- oder -
Der aktuelle Typ ist ein ByRef
-Typ. Das heißt, IsByRef gibt true
zurück.
Hinweise
Die MakeArrayType -Methode bietet eine Möglichkeit zum Generieren von Arraytypen, deren Elementtypen zur Laufzeit berechnet werden.
Hinweis Die Common Language Runtime unterscheidet zwischen Vektoren (d. h. eindimensionalen Arrays, die immer nullbasiert sind) und mehrdimensionalen Arrays. Ein Vektor, der immer nur eine Dimension hat, ist nicht dasselbe wie ein mehrdimensionales Array, das nur eine Dimension aufweist. Diese Methodenüberladung kann nur zum Erstellen von Vektortypen verwendet werden, und es ist die einzige Möglichkeit, einen Vektortyp zu erstellen. Verwenden Sie die MakeArrayType(Int32) Methodenüberladung, um mehrdimensionale Arraytypen zu erstellen.
Weitere Informationen
Gilt für:
MakeArrayType(Int32)
- Quelle:
- Type.cs
- Quelle:
- Type.cs
- Quelle:
- Type.cs
Gibt ein Type-Objekt zurück, das ein Array vom aktuellen Typ mit der angegebenen Anzahl von Dimensionen darstellt.
public:
abstract Type ^ MakeArrayType(int rank);
public:
virtual Type ^ MakeArrayType(int rank);
public abstract Type MakeArrayType (int rank);
public virtual Type MakeArrayType (int rank);
abstract member MakeArrayType : int -> Type
abstract member MakeArrayType : int -> Type
override this.MakeArrayType : int -> Type
Public MustOverride Function MakeArrayType (rank As Integer) As Type
Public Overridable Function MakeArrayType (rank As Integer) As Type
Parameter
- rank
- Int32
Die Anzahl von Dimensionen für das Array. Diese Zahl muss kleiner oder gleich 32 sein.
Gibt zurück
Ein Objekt, das ein Array vom aktuellen Typ mit der angegebenen Anzahl von Dimensionen darstellt.
Ausnahmen
rank
ist ungültig. Beispielsweise 0 oder ein negativer Wert.
Die aufgerufene Methode wird in der Basisklasse nicht unterstützt.
Der aktuelle Typ ist TypedReference.
- oder -
Der aktuelle Typ ist ein ByRef
-Typ. Das heißt, IsByRef gibt true
zurück.
- oder -
rank
ist größer als 32.
Hinweise
Die MakeArrayType -Methode bietet eine Möglichkeit zum Generieren von Arraytypen, deren Elementtypen zur Laufzeit berechnet werden.
Hinweis
Die Common Language Runtime unterscheidet zwischen Vektoren (d. h. eindimensionalen Arrays, die immer nullbasiert sind) und mehrdimensionalen Arrays. Ein Vektor, der immer nur eine Dimension hat, ist nicht dasselbe wie ein mehrdimensionales Array, das nur eine Dimension aufweist. Sie können diese Methodenüberladung nicht verwenden, um einen Vektortyp zu erstellen. wenn rank
1 ist, gibt diese Methodenüberladung einen mehrdimensionalen Arraytyp zurück, der eine Dimension aufweist. Verwenden Sie die MakeArrayType() Methodenüberladung, um Vektortypen zu erstellen.