次の方法で共有


Type.GetFields メソッド ()

現在の Type のすべてのパブリック フィールドを返します。

Overloads Public Function GetFields() As FieldInfo()
[C#]
public FieldInfo[] GetFields();
[C++]
public: FieldInfo* GetFields() [];
[JScript]
public function GetFields() : FieldInfo[];

戻り値

現在の Type に対して定義されているすべてのパブリック フィールドを表す FieldInfo オブジェクトの配列。

または

現在の Type に対してパブリック フィールドが定義されていない場合は、 FieldInfo 型の空の配列。

解説

GetFields メソッドから返されるフィールドは、アルファベット順や宣言順などの特定の順序で返されるわけではありません。したがって、フィールドが返される順序に依存するようなコードは避ける必要があります。

型に対するリフレクション時に Get メソッドによって返される基本クラスのメンバを次の表に示します。

メンバ型 静的 非静的
コンストラクタ いいえ いいえ
フィールド いいえ はい。フィールドは常に名前と署名によって隠ぺいされます。
イベント 適用なし 共通型システムの規則では、継承は、プロパティを実装するメソッドの継承と同じになります。リフレクションは、プロパティを名前と署名によって隠ぺいされているとして扱います。下記のメモ 2 を参照してください。
メソッド いいえ はい。メソッド (仮想メソッドと非仮想メソッドの両方) は、名前によって隠蔽することもできますし、名前と署名によって隠蔽することもできます。
入れ子になった型 いいえ いいえ
プロパティ 適用なし 共通型システムの規則では、継承は、プロパティを実装するメソッドの継承と同じになります。リフレクションは、プロパティを名前と署名によって隠ぺいされているとして扱います。下記のメモ 2 を参照してください。
  1. 名前と署名による隠ぺいでは、カスタム修飾子、戻り値の型、パラメータの型、sentinel、およびアンマネージ呼び出し規約を含めて、署名のすべての部分が判断の対象となります。これはバイナリ比較です。
  2. リフレクションの場合、プロパティおよびイベントは名前と署名によって隠ぺいされています。基本クラスに get アクセサと set アクセサの両方を持つプロパティがあり、派生クラスには get アクセサしかない場合、派生クラスのプロパティにより基本クラスのプロパティが隠ぺいされ、基本クラスの set アクセサにはアクセスできません。
  3. カスタム属性は、共通の型システムの一部ではありません。

使用例

[Visual Basic, C#, C++] GetFields() メソッドを使用する例を次に示します。

 
Imports System
Imports System.Reflection
Imports System.ComponentModel.Design
Imports Microsoft.VisualBasic

Class FieldInfo_IsSpecialName

    Public Shared Sub Main()
        Try
            ' Get the type handle of a specified class.
            Dim myType As Type = GetType(ViewTechnology)

            ' Get the fields of a specified class.
            Dim myField As FieldInfo() = myType.GetFields()

            Console.WriteLine(ControlChars.Cr + "Displaying fields that have SpecialName attributes:" + ControlChars.Cr)
            Dim i As Integer
            For i = 0 To myField.Length - 1
                ' Determine whether or not each field is a special name.
                If myField(i).IsSpecialName Then
                    Console.WriteLine("The field {0} has a SpecialName attribute.", myField(i).Name)
                End If
            Next i
        Catch e As Exception
            Console.WriteLine("Exception : {0} ", e.Message.ToString())
        End Try
    End Sub 'Main
End Class 'FieldInfo_IsSpecialName

[C#] 
using System;
using System.Reflection;
using System.ComponentModel.Design;


class FieldInfo_IsSpecialName
{
    public static void Main()
    {     
        try
        {
            // Get the type handle of a specified class.
            Type myType = typeof(ViewTechnology);
         
            // Get the fields of the specified class.
            FieldInfo[] myField = myType.GetFields();

            Console.WriteLine("\nDisplaying fields that have SpecialName attributes:\n");
            for(int i = 0; i < myField.Length; i++)
            {
                // Determine whether or not each field is a special name.
                if(myField[i].IsSpecialName)
                {
                    Console.WriteLine("The field {0} has a SpecialName attribute.",
                        myField[i].Name);
                }
            }
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception : {0} " , e.Message);
        }
    }
}

[C++] 
#using <mscorlib.dll>
#using <system.dll>

using namespace System;
using namespace System::Reflection;
using namespace System::ComponentModel::Design;

int main()
{     
   try {
      // Get the type handle of a specified class.
      Type* myType = __typeof(ViewTechnology);

      // Get the fields of the specified class.
      FieldInfo* myField[] = myType->GetFields();

      Console::WriteLine(S"\nDisplaying fields that have SpecialName attributes:\n");
      for (int i = 0; i < myField->Length; i++) {
         // Determine whether or not each field is a special name.
         if (myField[i]->IsSpecialName) {
            Console::WriteLine(S"The field {0} has a SpecialName attribute.",
               myField[i]->Name);
         }
      }
   } catch (Exception* e) {
      Console::WriteLine(S"Exception : {0} " , e->Message);
   }
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

Type クラス | Type メンバ | System 名前空間 | Type.GetFields オーバーロードの一覧 | FieldInfo | GetField