C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のType.GetArrayRank()メソッドの使い方を徹底解説

C#におけるType.GetArrayRank()メソッドは、配列の次元数(ランク)を取得するためのメソッドです。多次元配列が何次元であるかをプログラム上で確認したい場合に便利な機能です。

構文

public virtual int GetArrayRank ();

このメソッドは、対象の型が配列である場合にその次元数をint型で返します。戻り値の「ランク」とは、配列の角括弧内のカンマの数+1、つまり配列のインデックスの数を表します。

使用例1:3次元配列のランクを取得する

まずは、3次元のint型配列に対してType.GetArrayRank()メソッドを使用する基本的な例を見てみましょう。

using System;
public class Demo {
   public static void Main(string[] args) {
      Type type = typeof(int[,]);
      int arrRank = type.GetArrayRank();
      Console.WriteLine("Array Rank = {0}", arrRank);
   }
}

出力結果

上記のコードを実行すると、以下の出力が得られます。

Array Rank = 3

typeof演算子で取得したint[,]型(3次元配列)に対してGetArrayRank()メソッドを呼び出すことで、「3」という次元数が正しく表示されています。

使用例2:8次元配列と型の等価性チェック

続いて、より多くの次元を持つ配列の例と、Equalsメソッドを使った型の比較を組み合わせたサンプルコードを紹介します。

using System;
public class Demo {
   public static void Main(string[] args) {
      Type type = typeof(string[,,,,,,]);
      Type type2 = typeof(string[,,,,,,]);
      int arrRank = type.GetArrayRank();
      Console.WriteLine("Array Rank = {0}", arrRank);
      Console.WriteLine("Are both types equal? {0}", type.Equals(type2));
   }
}

出力結果

このコードを実行すると、次のような出力になります。

Array Rank = 8 Are both types equal? True

ポイントまとめ

  • GetArrayRank()メソッドは、配列型のTypeオブジェクトに対して呼び出すことで、その次元数をint型として返します。
  • 同じ次元数・同じ要素型を持つ配列型同士は、Equalsメソッドによる比較で等しいと判定されます。
  • 配列以外の型に対してこのメソッドを呼び出すと、ArgumentExceptionがスローされる点に注意が必要です。

このようにType.GetArrayRank()メソッドを使えば、リフレクションを通じて配列の次元情報を簡単に動的に取得できます。ジェネリックコードや動的な型操作を行う場面で活用できる有用なメソッドです。

  1. C#のType.GetDefaultMembers()メソッドとは?構文と使い方を解説

    C#のType.GetDefaultMembers()メソッドは、現在のTypeに対して定義されているメンバーの中から、DefaultMemberAttributeが設定されたメンバーを検索するために使用されます。リフレクションを利用して、型に既定のメンバーとして指定されたプロパティやメソッドを動的に取得したい場合に役立つメソッドです。構文public virtual System.Reflection.MemberInfo[] GetDefaultMembers ();戻り値は、検索条件に一致するメンバー情報を格納した MemberInfo 型の配列です。該当するメンバーが存在しない場合は、

  2. C#のType.Equals()メソッドとは?使い方とサンプルコードを解説

    C#のType.Equals()メソッドは、現在のTypeインスタンスが表す基盤となるシステム型が、指定されたObjectまたはTypeの基盤となるシステム型と同一であるかどうかを判定します。リフレクション処理などで型同士を比較したい場合に役立つメソッドです。 構文 public virtual bool Equals (Type o); public override bool Equals (object o); パラメータ o:現在のTypeの基盤となるシステム型と比較する対象となるオブジェクトまたは型を指定します。 戻り値 両方の基盤システム型が同じ場合は true、異なる場合は fa