フィールドが静的かどうかを示す値を取得します。
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 メソッドで BindingFlags を NonPublic に設定し、アクセシビリティを 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