Type.MakeArrayType Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Returnerar ett Type objekt som representerar en matris av den aktuella typen.
Överlagringar
| Name | Description |
|---|---|
| MakeArrayType() |
Returnerar ett Type objekt som representerar en endimensionell matris av den aktuella typen, med en lägre gräns på noll. |
| MakeArrayType(Int32) |
Returnerar ett Type objekt som representerar en matris av den aktuella typen, med det angivna antalet dimensioner. |
Exempel
I följande kodexempel skapas matris, ref (ByRef i Visual Basic) och pekartyper för klassen Test.
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()
- Källa:
- Type.cs
- Källa:
- Type.cs
- Källa:
- Type.cs
- Källa:
- Type.cs
- Källa:
- Type.cs
Returnerar ett Type objekt som representerar en endimensionell matris av den aktuella typen, med en lägre gräns på noll.
public:
abstract Type ^ MakeArrayType();
public:
virtual Type ^ MakeArrayType();
public abstract Type MakeArrayType();
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("The code for an array of the specified type might not be available.")]
public virtual Type MakeArrayType();
public virtual Type MakeArrayType();
abstract member MakeArrayType : unit -> Type
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("The code for an array of the specified type might not be available.")>]
abstract member MakeArrayType : unit -> Type
override this.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
Returer
Ett Type objekt som representerar en endimensionell matris av den aktuella typen, med en lägre gräns på noll.
- Attribut
Undantag
Den anropade metoden stöds inte i basklassen. Härledda klasser måste tillhandahålla en implementering.
Den aktuella typen är TypedReference.
-eller-
Den aktuella typen är en ByRef typ. Det vill: IsByRef returnerar true.
Kommentarer
Metoden MakeArrayType ger ett sätt att generera matristyper vars elementtyper beräknas vid körning.
Observera Den vanliga språkkörningen skiljer mellan vektorer (dvs. endimensionella matriser som alltid är nollbaserade) och flerdimensionella matriser. En vektor, som alltid bara har en dimension, är inte samma som en flerdimensionell matris som råkar ha bara en dimension. Den här metodens överlagring kan bara användas för att skapa vektortyper, och det är det enda sättet att skapa en vektortyp. Använd metodöverlagringen MakeArrayType(Int32) för att skapa flerdimensionella matristyper.
Se även
Gäller för
MakeArrayType(Int32)
- Källa:
- Type.cs
- Källa:
- Type.cs
- Källa:
- Type.cs
- Källa:
- Type.cs
- Källa:
- Type.cs
Returnerar ett Type objekt som representerar en matris av den aktuella typen, med det angivna antalet dimensioner.
public:
abstract Type ^ MakeArrayType(int rank);
public:
virtual Type ^ MakeArrayType(int rank);
public abstract Type MakeArrayType(int rank);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("The code for an array of the specified type might not be available.")]
public virtual Type MakeArrayType(int rank);
public virtual Type MakeArrayType(int rank);
abstract member MakeArrayType : int -> Type
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("The code for an array of the specified type might not be available.")>]
abstract member MakeArrayType : int -> Type
override this.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
Parametrar
- rank
- Int32
Antalet dimensioner för matrisen. Det här talet måste vara mindre än eller lika med 32.
Returer
Ett objekt som representerar en matris av den aktuella typen, med det angivna antalet dimensioner.
- Attribut
Undantag
rank är ogiltigt. Till exempel 0 eller negativt.
Den anropade metoden stöds inte i basklassen.
Den aktuella typen är TypedReference.
-eller-
Den aktuella typen är en ByRef typ. Det vill: IsByRef returnerar true.
-eller-
rank är större än 32.
Kommentarer
Metoden MakeArrayType ger ett sätt att generera matristyper vars elementtyper beräknas vid körning.
Note
Den vanliga språkkörningen skiljer mellan vektorer (dvs. endimensionella matriser som alltid är nollbaserade) och flerdimensionella matriser. En vektor, som alltid bara har en dimension, är inte samma som en flerdimensionell matris som råkar ha bara en dimension. Du kan inte använda den här metodens överlagring för att skapa en vektortyp. om rank är 1 returnerar den här metoden en flerdimensionell matristyp som råkar ha en dimension. Använd metodöverlagringen MakeArrayType() för att skapa vektortyper.