FieldInfo.IsStatic 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
정적 필드인지 여부를 나타내는 값을 가져옵니다.
public:
property bool IsStatic { bool get(); };
public bool IsStatic { get; }
member this.IsStatic : bool
Public ReadOnly Property IsStatic As Boolean
속성 값
이 필드가 정적 필드이면 true
이고, 그렇지 않으면 false
입니다.
구현
예제
다음 예제에서는 지정된 필드가 정적인지 여부를 확인하고 결과를 표시합니다.
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 private 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 = typeof(Myfielda);
FieldInfo Myfieldinfoa = MyTypea.GetField("field", BindingFlags.NonPublic|BindingFlags.Instance);
Type MyTypeb = typeof(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;
}
}
Imports System.Reflection
' 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 private 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 = GetType(Myfielda)
Dim Myfieldinfoa As FieldInfo = _
MyTypea.GetField("m_field", BindingFlags.NonPublic Or BindingFlags.Instance)
Dim MyTypeb As 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
이 코드의 결과는 다음과 같습니다.
Reflection.FieldInfo
Myfielda - A private field; IsStatic - False
Myfieldb - B static field; IsStatic - True
설명
필드가 정적이면 필드의 복사본 하나가 형식의 모든 인스턴스에서 공유됩니다.
속성은 IsStatic
특성이 FieldAttributes.Static
설정되면 설정됩니다.
속성을 얻으려면 IsStatic
먼저 클래스 Type
를 가져옵니다. 에서 를 Type
가져옵니다 FieldInfo
.
FieldInfo
에서 속성을 가져옵니다IsStatic
. 공용이 아닌 필드에 액세스하려면 메서드에서 를 로 GetField
설정하고 NonPublic
BindingFlags
접근성을 또는 Static
로 Instance
설정합니다.