Type.MakeArrayType Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Olyan objektumot ad Type vissza, amely az aktuális típusú tömböt jelöli.
Túlterhelések
| Name | Description |
|---|---|
| MakeArrayType() |
Az aktuális típusú egydimenziós tömböt képviselő objektumot ad Type vissza, amelynek alsó határa nulla. |
| MakeArrayType(Int32) |
Type Az aktuális típusú tömböt képviselő objektumot ad vissza a megadott számú dimenzióval. |
Példák
Az alábbi példakód tömböket, ref (ByRef Visual Basic) és mutatótípusokat hoz létre a Test osztályhoz.
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()
- Forrás:
- Type.cs
- Forrás:
- Type.cs
- Forrás:
- Type.cs
- Forrás:
- Type.cs
- Forrás:
- Type.cs
Az aktuális típusú egydimenziós tömböt képviselő objektumot ad Type vissza, amelynek alsó határa nulla.
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
Válaszok
Az Type aktuális típusú egydimenziós tömböt képviselő objektum, amelynek alsó határa nulla.
- Attribútumok
Kivételek
A meghívott metódus nem támogatott az alaposztályban. A származtatott osztályoknak implementációt kell biztosítaniuk.
Az aktuális típus a következő TypedReference: .
-vagy-
Az aktuális típus egy ByRef típus. Vagyis IsByRef visszaadja true.
Megjegyzések
A MakeArrayType metódus lehetővé teszi olyan tömbtípusok létrehozására, amelyek elemtípusai futásidőben vannak kiszámítva.
Megjegyzés A közös nyelvi futtatókörnyezet különbséget tesz a vektorok (azaz a mindig nulla alapú egydimenziós tömbök) és a többdimenziós tömbök között. Egy vektor, amely mindig csak egy dimenzióval rendelkezik, nem ugyanaz, mint egy többdimenziós tömb, amely történetesen csak egy dimenzióval rendelkezik. Ez a metódus túlterhelés csak vektortípusok létrehozására használható, és ez az egyetlen módja a vektortípus létrehozásának. A metódus túlterhelésével MakeArrayType(Int32) többdimenziós tömbtípusokat hozhat létre.
Lásd még
A következőre érvényes:
MakeArrayType(Int32)
- Forrás:
- Type.cs
- Forrás:
- Type.cs
- Forrás:
- Type.cs
- Forrás:
- Type.cs
- Forrás:
- Type.cs
Type Az aktuális típusú tömböt képviselő objektumot ad vissza a megadott számú dimenzióval.
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
Paraméterek
- rank
- Int32
A tömb dimenzióinak száma. Ennek a számnak 32-nél kisebbnek vagy egyenlőnek kell lennie.
Válaszok
Az aktuális típusú tömböt képviselő objektum a megadott számú dimenzióval.
- Attribútumok
Kivételek
rank érvénytelen. Például 0 vagy negatív.
A meghívott metódus nem támogatott az alaposztályban.
Az aktuális típus a következő TypedReference: .
-vagy-
Az aktuális típus egy ByRef típus. Vagyis IsByRef visszaadja true.
-vagy-
rank nagyobb, mint 32.
Megjegyzések
A MakeArrayType metódus lehetővé teszi olyan tömbtípusok létrehozására, amelyek elemtípusai futásidőben vannak kiszámítva.
Note
A közös nyelvi futtatókörnyezet különbséget tesz a vektorok (azaz a mindig nulla alapú egydimenziós tömbök) és a többdimenziós tömbök között. Egy vektor, amely mindig csak egy dimenzióval rendelkezik, nem ugyanaz, mint egy többdimenziós tömb, amely történetesen csak egy dimenzióval rendelkezik. A metódus túlterhelése nem használható vektortípus létrehozásához; ha rank 1, akkor ez a metódus túlterhelés egy többdimenziós tömbtípust ad vissza, amely történetesen egy dimenzióval rendelkezik. A metódus túlterhelésével MakeArrayType() vektortípusokat hozhat létre.