Type.MakeArrayType メソッド ()
アセンブリ: mscorlib (mscorlib.dll 内)

Dim instance As Type Dim returnValue As Type returnValue = instance.MakeArrayType
下限を 0 に設定して現在の型の 1 次元配列を表す Type オブジェクト。

MakeArrayType メソッドは、実行時に計算される要素型を持つ配列型を生成する手段を提供します。
![]() |
---|
共通言語ランタイムは、ベクタの識別 (常にインデックス番号が 0 から始まる 1 次元配列と多次元配列) を行います。このメソッド オーバーロードは、ベクタ型を作成する唯一の方法です。MakeArrayType(Int32) メソッド オーバーロードでベクタ型を作成することはできません。 |

Test クラスの配列、ref (Visual Basic の場合は ByRef)、およびポインタ型を作成するコード例を次に示します。
Imports System Imports System.Reflection Imports Microsoft.VisualBasic 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*
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* */
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* */
import System.*; import System.Reflection.*; public class Example { public static void main(String[] args) { // Create a Type object that represents a one-dimensional // array of Example objects. Type t = Example.class.ToType().MakeArrayType(); Console.WriteLine("\r\nArray of Example: {0}", t); // Create a Type object that represents a two-dimensional // array of Example objects. t = Example.class.ToType().MakeArrayType(2); Console.WriteLine("\r\nTwo-dimensional array of Example: {0}", t); // Demonstrate an exception when an invalid array rank is // specified. try { t = Example.class.ToType().MakeArrayType(-1); } catch (System.Exception ex) { Console.WriteLine("\r\n{0}", ex); } // Create a Type object that represents a ByRef parameter // of type Example. t = Example.class.ToType().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 = Example.class.ToType(); MethodInfo mi = t2.GetMethod("Test"); ParameterInfo pi = mi.GetParameters()[0]; Type pt = pi.get_ParameterType(); Console.WriteLine("Are the ByRef types equal? {0}", new Boolean(t == pt)); // Create a Type object that represents a pointer to an // Example object. t = Example.class.ToType().MakePointerType(); Console.WriteLine("\r\nPointer to Example: {0}", t); } //main // A sample method with a ByRef parameter. // public void Test(Example e) { } //Test } //Example /* 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.jsl:line 2999 at Example.main() ByRef Example: Example& Are the ByRef types equal? false Pointer to Example: Example* */

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Type.MakeArrayType メソッド

名前 | 説明 |
---|---|
Type.MakeArrayType () | 下限を 0 に設定して現在の型の 1 次元配列を表す Type オブジェクトを返します。 |
Type.MakeArrayType (Int32) | 次元数を指定して現在の型の配列を表す Type オブジェクトを返します。 |

Type.MakeArrayType メソッド (Int32)
アセンブリ: mscorlib (mscorlib.dll 内)

Dim instance As Type Dim rank As Integer Dim returnValue As Type returnValue = instance.MakeArrayType(rank)
戻り値
次元数を指定して現在の型の配列を表す Type オブジェクト。


MakeArrayType メソッドは、実行時に要素型が計算される配列型を生成する手段を提供します。
![]() |
---|
共通言語ランタイムは、ベクタの識別 (常にインデックス番号が 0 から始まる 1 次元配列と多次元配列) を行います。rank が 1 の場合は、このメソッド オーバーロードを使用してベクタ型を作成することはできません。このメソッド オーバーロードは、1 つの次元を持っている多次元配列型を返します。MakeArrayType メソッド オーバーロードを使用してベクタ型を作成します。 |

Test クラスの配列、ref (Visual Basic の場合は ByRef)、およびポインタ型を作成するコード例を次に示します。
Imports System Imports System.Reflection Imports Microsoft.VisualBasic 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*
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* */
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* */
import System.*; import System.Reflection.*; public class Example { public static void main(String[] args) { // Create a Type object that represents a one-dimensional // array of Example objects. Type t = Example.class.ToType().MakeArrayType(); Console.WriteLine("\r\nArray of Example: {0}", t); // Create a Type object that represents a two-dimensional // array of Example objects. t = Example.class.ToType().MakeArrayType(2); Console.WriteLine("\r\nTwo-dimensional array of Example: {0}", t); // Demonstrate an exception when an invalid array rank is // specified. try { t = Example.class.ToType().MakeArrayType(-1); } catch (System.Exception ex) { Console.WriteLine("\r\n{0}", ex); } // Create a Type object that represents a ByRef parameter // of type Example. t = Example.class.ToType().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 = Example.class.ToType(); MethodInfo mi = t2.GetMethod("Test"); ParameterInfo pi = mi.GetParameters()[0]; Type pt = pi.get_ParameterType(); Console.WriteLine("Are the ByRef types equal? {0}", new Boolean(t == pt)); // Create a Type object that represents a pointer to an // Example object. t = Example.class.ToType().MakePointerType(); Console.WriteLine("\r\nPointer to Example: {0}", t); } //main // A sample method with a ByRef parameter. // public void Test(Example e) { } //Test } //Example /* 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.jsl:line 2999 at Example.main() ByRef Example: Example& Are the ByRef types equal? false Pointer to Example: Example* */

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- Type.MakeArrayTypeのページへのリンク