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

C#のType.GetFields()メソッドとは?構文と使い方を実例付きで解説

C#におけるType.GetFields()メソッドは、リフレクション機能を使用して、現在のTypeオブジェクトが持つフィールド情報を取得するためのメソッドです。引数を指定せずに呼び出した場合はパブリックフィールドのみが返されますが、BindingFlagsを組み合わせることで、非公開(private)フィールドや静的(static)フィールドなども取得できます。

構文

Type.GetFields()メソッドの基本的な構文は以下の通りです。

public System.Reflection.FieldInfo[] GetFields ();

使用例1:System.String型の非公開フィールドを取得する

まずは、Type.GetFields()メソッドを使って、System.String型が内部に持つ非公開かつ静的なフィールドを取得する例を見てみましょう。

using System;
using System.Reflection;
public class Demo {
    public static void Main(){
        Type type = typeof(System.String);
        FieldInfo [] fields = type.GetFields(BindingFlags.Static | BindingFlags.NonPublic);
        Console.WriteLine ("Following are the non-public fields=");
        foreach (FieldInfo myField in fields){
            Console.WriteLine(myField.ToString());
        }
    }
}

出力結果

上記のコードを実行すると、String型の非公開フィールド一覧が次のように表示されます。

Following are the non-public fields=
Int32 TrimHead
Int32 TrimTail
Int32 TrimBoth
Int32 charPtrAlignConst
Int32 alignConst

使用例2:System.Char型の非公開フィールドを取得する

続いて、System.Char型に対して同じ処理を行った場合の例です。

using System;
using System.Reflection;
public class Demo {
    public static void Main(){
        Type type = typeof(System.Char);
        FieldInfo [] fields = type.GetFields(BindingFlags.Static | BindingFlags.NonPublic);
        Console.WriteLine ("\nFollowing are the non-public fields=");
        foreach (FieldInfo myField in fields){
            Console.WriteLine(myField.ToString());
        }
    }
}

出力結果

このコードを実行すると、Char型が内部的に保持している非公開フィールドの一覧が出力されます。

Following are the non-public fields=
Byte[] categoryForLatin1
Int32 UNICODE_PLANE00_END
Int32 UNICODE_PLANE01_START
Int32 UNICODE_PLANE16_END
Int32 HIGH_SURROGATE_START
Int32 LOW_SURROGATE_END

まとめ

Type.GetFields()メソッドは、リフレクションによって型のフィールド情報を動的に調べたい場合に非常に便利なメソッドです。BindingFlags.StaticBindingFlags.NonPublicなどのフラグを組み合わせることで、通常は外部からアクセスできない内部フィールドまで確認できます。ライブラリの挙動調査やデバッグ作業の際にぜひ活用してみてください。

  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