英語で読む

次の方法で共有


Type.MakeArrayType メソッド

定義

現在の型の配列を表す Type オブジェクトを返します。

オーバーロード

MakeArrayType()

下限を 0 に設定して現在の型の 1 次元配列を表す Type オブジェクトを返します。

MakeArrayType(Int32)

次元数を指定して現在の型の配列を表す Type オブジェクトを返します。

次のコード例では、 クラスの配列 ( refByRef Visual Basic では) とポインター型をTest作成します。

C#
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*

 */

MakeArrayType()

ソース:
Type.cs
ソース:
Type.cs
ソース:
Type.cs

下限を 0 に設定して現在の型の 1 次元配列を表す Type オブジェクトを返します。

C#
public abstract Type MakeArrayType ();
C#
public virtual Type MakeArrayType ();

戻り値

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

例外

呼び出されたメソッドは基底クラスでサポートされていません。 派生クラスには実装を指定しなければなりません。

現在の型は TypedReferenceです。

または

現在の型は ByRef 型です。 つまり、IsByReftrue を返します。

注釈

メソッドは MakeArrayType 、実行時に要素型が計算される配列型を生成する方法を提供します。

メモ 共通言語ランタイムは、ベクトル (つまり、常に 0 から始まる 1 次元配列) と多次元配列を区別します。 常に 1 つの次元しか持たないベクターは、1 つの次元しか持たない多次元配列と同じではありません。 このメソッド オーバーロードはベクター型の作成にのみ使用でき、ベクター型を作成する唯一の方法です。 多次元配列型を MakeArrayType(Int32) 作成するには、 メソッド オーバーロードを使用します。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

MakeArrayType(Int32)

ソース:
Type.cs
ソース:
Type.cs
ソース:
Type.cs

次元数を指定して現在の型の配列を表す Type オブジェクトを返します。

C#
public abstract Type MakeArrayType (int rank);
C#
public virtual Type MakeArrayType (int rank);

パラメーター

rank
Int32

配列の次元数。 この数値は 32 以下である必要があります。

戻り値

次元数を指定して現在の型の配列を表すオブジェクト。

例外

rank が無効です。 たとえば、0 または負の値です。

呼び出されたメソッドは基底クラスでサポートされていません。

現在の型は TypedReference です。

または

現在の型は ByRef 型です。 つまり、 IsByReftrueを返します。

または

rank が 32 を超えています。

注釈

メソッドは MakeArrayType 、実行時に要素型が計算される配列型を生成する方法を提供します。

注意

共通言語ランタイムは、ベクトル (つまり、常に 0 から始まる 1 次元配列) と多次元配列を区別します。 常に 1 つの次元しか持たないベクターは、1 つの次元しか持たない多次元配列と同じではありません。 このメソッド オーバーロードを使用してベクター型を作成することはできません。が 1 の場合 rank 、このメソッドオーバーロードは、1 つの次元を持つ多次元配列型を返します。 ベクター型を作成するには、 MakeArrayType() メソッド オーバーロードを使用します。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0