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

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

C#におけるType.GetField()メソッドは、現在のType(型)から、指定した名前の特定のフィールド情報を取得するために使用されるメソッドです。リフレクション(System.Reflection)を活用することで、実行時に型のフィールドへ動的にアクセスできます。

構文

Type.GetField()メソッドには、以下の2つのオーバーロードがあります。

public System.Reflection.FieldInfo GetField (string name);
public abstract System.Reflection.FieldInfo GetField (string name, System.Reflection.BindingFlags bindingAttr);

パラメータ

  • name:取得したいデータフィールドの名前を含む文字列です。
  • bindingAttr:検索の方法を指定する列挙値(BindingFlags)のビットごとの組み合わせです。例えば、非公開フィールドを検索する場合は「BindingFlags.NonPublic | BindingFlags.Instance」のように指定します。

戻り値として、指定されたフィールドを表すFieldInfoオブジェクトが返されます。該当するフィールドが存在しない場合はnullが返ります。

使用例1:基本的なフィールドの取得

まずは、Type.GetField()メソッドを使ってフィールド情報を取得する基本的な例を見てみましょう。

using System;
using System.Reflection;
public class Demo {
   public static void Main(){
      Type type = typeof(Subject);
      try {
         FieldInfo fieldInfo = type.GetField("SubName");
         Console.WriteLine("FieldInfo = {0}", fieldInfo);
      }
      catch (ArgumentNullException e){
         Console.Write("{0}", e.GetType(), e.Message);
      }
   }
}
public class Subject{
   public string SubName = "Science";
}

出力

上記のコードを実行すると、次のような結果が出力されます。

FieldInfo = System.String SubName

この例では、「Subject」クラスのpublicフィールド「SubName」の情報が正常に取得できていることがわかります。

使用例2:nullを渡した場合の動作

次に、引数にnullを渡した場合の動作を確認してみましょう。

using System;
using System.Reflection;
public class Demo {
   public static void Main(){
      Type type = typeof(Subject);
      try {
         FieldInfo fieldInfo = type.GetField(null);
         Console.WriteLine("FieldInfo = {0}", fieldInfo);
      }
      catch (ArgumentNullException e){
         Console.Write("{0}", e.GetType(), e.Message);
      }
   }
}
public class Subject{
   public string SubName = "Science";
}

出力

この場合、name引数にnullを渡しているため、例外がスローされ、次のような結果が出力されます。

System.ArgumentNullException

まとめ

Type.GetField()メソッドを使用すると、文字列で指定した名前に基づいて、型のフィールド情報を動的に取得できます。ただし、引数にnullを渡すとArgumentNullExceptionが発生するため、実際のコードではnullチェックやtry-catchによる例外処理を適切に行うことが重要です。また、privateフィールドを取得したい場合は、第2引数に適切なBindingFlagsを指定する必要がある点にも注意しましょう。

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

    C#におけるType.GetArrayRank()メソッドは、配列の次元数(ランク)を取得するためのメソッドです。多次元配列が何次元であるかをプログラム上で確認したい場合に便利な機能です。構文public virtual int GetArrayRank ();このメソッドは、対象の型が配列である場合にその次元数をint型で返します。戻り値の「ランク」とは、配列の角括弧内のカンマの数+1、つまり配列のインデックスの数を表します。使用例1:3次元配列のランクを取得するまずは、3次元のint型配列に対してType.GetArrayRank()メソッドを使用する基本的な例を見てみましょう。using

  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