次の方法で共有


FieldInfo.IsStatic プロパティ

フィールドが静的かどうかを示す値を取得します。

Public ReadOnly Property IsStatic As Boolean
[C#]
public bool IsStatic {get;}
[C++]
public: __property bool get_IsStatic();
[JScript]
public function get IsStatic() : Boolean;

プロパティ値

フィールドが静的な場合は true 。それ以外の場合は false

解説

フィールドが静的な場合は、フィールドの 1 つのコピーが型のすべてのインスタンスで共有されます。

IsStatic プロパティは、 FieldAttributes.Static 属性が設定されたときに設定されます。

IsStatic プロパティを取得するには、最初に Type クラスを取得します。そして、その Type から FieldInfo を取得します。最後に、 FieldInfo から IsStatic プロパティを取得します。非パブリック フィールドにアクセスするには、 GetField メソッドで BindingFlagsNonPublic に設定し、アクセシビリティを Instance または Static に設定します。

使用例

指定したフィールドが静的かどうかを調べ、その結果を表示する例を次に示します。

 
Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic

' Make two fields.
Public Class Myfielda
    Private m_field As String = "A private field"

    Public Property Field() As String
        Get
            Return m_field
        End Get
        Set(ByVal Value As String)
            If m_field <> value Then
                m_field = value
            End If
        End Set
    End Property
End Class

Public Class Myfieldb
    Private Shared m_field As String = "B static field"

    Public Property Field() As String
        Get
            Return m_field
        End Get
        Set(ByVal Value As String)
            If m_field <> value Then
                m_field = value
            End If
        End Set
    End Property
End Class

Public Class Myfieldinfo

    Public Shared Sub Main()
        Console.WriteLine()
        Console.WriteLine("Reflection.FieldInfo")
        Console.WriteLine()
        Dim Myfielda As New Myfielda()
        Dim Myfieldb As New Myfieldb()

        ' Get the Type and FieldInfo.
        Dim MyTypea As Type = Type.GetType("Myfielda")
        Dim Myfieldinfoa As FieldInfo = _
           MyTypea.GetField("m_field", BindingFlags.NonPublic Or BindingFlags.Instance)
        Dim MyTypeb As Type = Type.GetType("Myfieldb")
        Dim Myfieldinfob As FieldInfo = _
           MyTypeb.GetField("m_field", BindingFlags.NonPublic Or BindingFlags.Static)

        ' For the first field, get and display the name, field, and IsStatic property value.
        Console.WriteLine("{0} - {1}; IsStatic - {2}", MyTypea.FullName, Myfieldinfoa.GetValue(Myfielda), Myfieldinfoa.IsStatic)

        ' For the second field, get and display the name, field, and IsStatic property value.
        Console.WriteLine("{0} - {1}; IsStatic - {2}", MyTypeb.FullName, Myfieldinfob.GetValue(Myfieldb), Myfieldinfob.IsStatic)

    End Sub
End Class

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

 // Make two fields.
public class Myfielda
{
    private string field = "A private field";
    public string Field
    {
        get{return field;}
        set{if(field!=value){field=value;}}
    }
}
public class Myfieldb
{
    static string field = "B static field";
    public string Field 
    {
        get{return field;}
        set{if(field!=value){field=value;}}
    }
}
  
public class Myfieldinfo
{
    public static int Main()
    {
        Console.WriteLine("\nReflection.FieldInfo");
        Myfielda Myfielda = new Myfielda();
        Myfieldb Myfieldb = new Myfieldb();
  
        // Get the Type and FieldInfo.
        Type MyTypea = Type.GetType("Myfielda");
        FieldInfo Myfieldinfoa = MyTypea.GetField("field", BindingFlags.NonPublic|BindingFlags.Instance);
        Type MyTypeb = Type.GetType("Myfieldb");
        FieldInfo Myfieldinfob = MyTypeb.GetField("field", BindingFlags.NonPublic|BindingFlags.Static);
  
        // For the first field, get and display the name, field, and IsStatic property value.
        Console.Write("\n{0} - ", MyTypea.FullName);
        Console.Write("{0}; ", Myfieldinfoa.GetValue(Myfielda));
        Console.Write("IsStatic - {0}", Myfieldinfoa.IsStatic);
  
        // For the second field get and display the name, field, and IsStatic property value.
        Console.Write("\n{0} - ", MyTypeb.FullName);
        Console.Write("{0}; ", Myfieldinfob.GetValue(Myfieldb));
        Console.Write("IsStatic - {0}", Myfieldinfob.IsStatic);
  
        return 0;
    }
}

[C++] 
#using <mscorlib.dll>
using namespace System;
using namespace System::Reflection;

// Make two fields.
public __gc class Myfielda
{
private:
    String* field;
public:
    Myfielda() : field(S"A private field") {}
    __property String* get_Field() {
        return field;
    }
    __property void set_Field(String* value) {
        if(field!=value){
            field=value;
        }
    }
};
public __gc class Myfieldb
{
    static String* field = S"B static field";
public:
    __property String* get_Field() {
        return field;
    }
    __property void set_Field(String* value) {
        if(field!=value){
            field=value;
        }
    }
};

int main()
{
    Console::WriteLine(S"\nReflection.FieldInfo");
    Myfielda* myfielda = new Myfielda();
    Myfieldb* myfieldb = new Myfieldb();

    // Get the Type and FieldInfo.
    Type* MyTypea = Type::GetType(S"Myfielda");
    FieldInfo* Myfieldinfoa = MyTypea->GetField(S"field",
        static_cast<BindingFlags>(BindingFlags::NonPublic|BindingFlags::Instance));
    Type* MyTypeb = Type::GetType(S"Myfieldb");
    FieldInfo* Myfieldinfob = MyTypeb->GetField(S"field",
        static_cast<BindingFlags>(BindingFlags::NonPublic|BindingFlags::Static));

    // For the first field, get and display the name, field, and IsStatic property value.
    Console::Write(S"\n{0} - ", MyTypea->FullName);
    Console::Write(S"{0}; ", Myfieldinfoa->GetValue(myfielda));
    Console::Write(S"IsStatic - {0}", __box(Myfieldinfoa->IsStatic));

    // For the second field get and display the name, field, and IsStatic property value.
    Console::Write(S"\n{0} - ", MyTypeb->FullName);
    Console::Write(S"{0}; ", Myfieldinfob->GetValue(myfieldb));
    Console::Write(S"IsStatic - {0}", __box(Myfieldinfob->IsStatic));

    return 0;
}

[JScript] 
//Make two fields.
public class Myfielda
{
   private var field : String = "A private field";
   public function get Field() : String {
       return field;
   }
   
   public function set Field(value : String) {
       if(field!=value)field=value;
   }
}
public class Myfieldb
{
   private static var field : String = "B static field";
   public static function get Field() : String  {
       return field;
   }
   public static function set Field(value : String) {
       if(field!=value) field=value;
   }
}
 
public class Myfieldinfo
{
   public static function Main() : void
   {
      Console.WriteLine("\nReflection.FieldInfo");
      var myfielda : Myfielda = new Myfielda();
      var myfieldb : Myfieldb = new Myfieldb();
 
      //Get the Type and FieldInfo.
      var MyTypea : Type = Type.GetType("Myfielda");
      var Myfieldinfoa : FieldInfo = MyTypea.GetField("field", BindingFlags.NonPublic|BindingFlags.Instance);
      var MyTypeb : Type = Type.GetType("Myfieldb");
      var Myfieldinfob : FieldInfo = MyTypeb.GetField("field", BindingFlags.NonPublic|BindingFlags.Static);
 
      //For the first field, get and display the name, field, and IsStatic.
      Console.Write("\n{0} - ", MyTypea.FullName);
      Console.Write("{0}; ", Myfieldinfoa.GetValue(myfielda));
      Console.Write("IsStatic - {0}", Myfieldinfoa.IsStatic);
 
      //For the second field get and display the name, field, and IsStatic.
      Console.Write("\n{0} - ", MyTypeb.FullName);
      Console.Write("{0}; ", Myfieldinfob.GetValue(myfieldb));
      Console.Write("IsStatic - {0}", Myfieldinfob.IsStatic);
   }
}
Myfieldinfo.Main();

このコードによって、次の出力が生成されます。

Reflection.FieldInfo

Myfielda - A private field; IsStatic - False

Myfieldb - B static field; IsStatic - True

必要条件

プラットフォーム: 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

参照

FieldInfo クラス | FieldInfo メンバ | System.Reflection 名前空間 | FieldAttributes | GetField | Type