Type.MakeArrayType Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Type Geçerli türdeki bir diziyi temsil eden bir nesne döndürür.
Aşırı Yüklemeler
MakeArrayType() |
Type Geçerli türün bir boyutlu dizisini, alt sınırı sıfır olan bir nesneyi döndürür. |
MakeArrayType(Int32) |
Type Belirtilen boyut sayısıyla geçerli türdeki bir diziyi temsil eden bir nesne döndürür. |
Örnekler
Aşağıdaki kod örneği, sınıfı için Test
dizi (ByRef
ref
Visual Basic'te) ve işaretçi türleri oluşturur.
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()
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
Type Geçerli türün bir boyutlu dizisini, alt sınırı sıfır olan bir nesneyi döndürür.
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
Döndürülenler
Type Geçerli türün bir boyutlu dizisini temsil eden ve alt sınırı sıfır olan bir nesne.
Özel durumlar
Çağırılan yöntem temel sınıfta desteklenmiyor. Türetilmiş sınıflar bir uygulama sağlamalıdır.
Açıklamalar
yöntemi, MakeArrayType öğe türleri çalışma zamanında hesaplanan dizi türleri oluşturmak için bir yol sağlar.
Not Ortak dil çalışma zamanı vektörler (her zaman sıfır tabanlı olan tek boyutlu diziler) ile çok boyutlu diziler arasında ayrım yapar. Her zaman tek bir boyutu olan vektör, yalnızca bir boyutu olan çok boyutlu diziyle aynı değildir. Bu yöntem aşırı yüklemesi yalnızca vektör türleri oluşturmak için kullanılabilir ve vektör türü oluşturmanın tek yolu budur. MakeArrayType(Int32) Çok boyutlu dizi türleri oluşturmak için yöntemi aşırı yüklemesini kullanın.
Ayrıca bkz.
Şunlara uygulanır
MakeArrayType(Int32)
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
Type Belirtilen boyut sayısıyla geçerli türdeki bir diziyi temsil eden bir nesne döndürür.
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
Parametreler
- rank
- Int32
Dizi için boyut sayısı. Bu sayı 32'den küçük veya buna eşit olmalıdır.
Döndürülenler
Belirtilen boyut sayısıyla geçerli türdeki bir diziyi temsil eden bir nesne.
Özel durumlar
rank
geçersizdir. Örneğin, 0 veya negatif.
Çağırılan yöntem temel sınıfta desteklenmiyor.
Geçerli tür: TypedReference.
-veya-
Geçerli tür bir ByRef
türdür. Yani döndürür IsByReftrue
.
-veya-
rank
32'den büyük.
Açıklamalar
yöntemi, MakeArrayType öğe türleri çalışma zamanında hesaplanan dizi türleri oluşturmak için bir yol sağlar.
Not
Ortak dil çalışma zamanı vektörler (her zaman sıfır tabanlı olan tek boyutlu diziler) ile çok boyutlu diziler arasında ayrım yapar. Her zaman tek bir boyutu olan vektör, yalnızca bir boyutu olan çok boyutlu diziyle aynı değildir. Vektör türü oluşturmak için bu yöntem aşırı yüklemesini kullanamazsınız; 1 ise rank
, bu yöntem aşırı yüklemesi bir boyutu olan çok boyutlu bir dizi türü döndürür.
MakeArrayType() Vektör türleri oluşturmak için yöntemi aşırı yüklemesini kullanın.