Type.MakeArrayType Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengembalikan Type objek yang mewakili array dari jenis saat ini.
Overload
MakeArrayType() |
Mengembalikan objek yang Type mewakili array satu dimensi dari jenis saat ini, dengan batas nol yang lebih rendah. |
MakeArrayType(Int32) |
Mengembalikan objek yang Type mewakili array dari jenis saat ini, dengan jumlah dimensi yang ditentukan. |
Contoh
Contoh kode berikut membuat array, ref
(ByRef
di Visual Basic), dan jenis pointer untuk Test
kelas .
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()
- Sumber:
- Type.cs
- Sumber:
- Type.cs
- Sumber:
- Type.cs
Mengembalikan objek yang Type mewakili array satu dimensi dari jenis saat ini, dengan batas nol yang lebih rendah.
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
Mengembalikan
Objek Type yang mewakili array satu dimensi dari jenis saat ini, dengan batas nol yang lebih rendah.
Pengecualian
Metode yang dipanggil tidak didukung di kelas dasar. Kelas turunan harus menyediakan implementasi.
Jenis saat ini adalah TypedReference.
-atau-
Jenis saat ini adalah ByRef
tipe. Artinya, IsByRef mengembalikan true
.
Keterangan
Metode ini MakeArrayType menyediakan cara untuk menghasilkan jenis array yang jenis elemennya dihitung pada durasi.
Catatan Runtime bahasa umum membuat perbedaan antara vektor (yaitu, array satu dimensi yang selalu berbasis nol) dan array multidmensional. Vektor, yang selalu hanya memiliki satu dimensi, tidak sama dengan array multidmensional yang kebetulan hanya memiliki satu dimensi. Metode ini kelebihan beban hanya dapat digunakan untuk membuat jenis vektor, dan ini adalah satu-satunya cara untuk membuat jenis vektor. MakeArrayType(Int32) Gunakan metode kelebihan beban untuk membuat jenis array multidmensional.
Lihat juga
Berlaku untuk
MakeArrayType(Int32)
- Sumber:
- Type.cs
- Sumber:
- Type.cs
- Sumber:
- Type.cs
Mengembalikan objek yang Type mewakili array dari jenis saat ini, dengan jumlah dimensi yang ditentukan.
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
Jumlah dimensi untuk array. Angka ini harus kurang dari atau sama dengan 32.
Mengembalikan
Objek yang mewakili array dari jenis saat ini, dengan jumlah dimensi yang ditentukan.
Pengecualian
rank
tidak valid. Misalnya, 0 atau negatif.
Metode yang dipanggil tidak didukung di kelas dasar.
Jenis saat ini adalah TypedReference.
-atau-
Jenis saat ini adalah ByRef
tipe. Artinya, IsByRef mengembalikan true
.
-atau-
rank
lebih besar dari 32.
Keterangan
Metode ini MakeArrayType menyediakan cara untuk menghasilkan jenis array yang jenis elemennya dihitung pada durasi.
Catatan
Runtime bahasa umum membuat perbedaan antara vektor (yaitu, array satu dimensi yang selalu berbasis nol) dan array multidmensional. Vektor, yang selalu hanya memiliki satu dimensi, tidak sama dengan array multidmensional yang kebetulan hanya memiliki satu dimensi. Anda tidak dapat menggunakan metode ini kelebihan beban untuk membuat jenis vektor; jika rank
adalah 1, metode ini kelebihan beban mengembalikan jenis array multidmensional yang kebetulan memiliki satu dimensi. Gunakan metode kelebihan MakeArrayType() beban untuk membuat jenis vektor.