FieldInfo.IsInitOnly 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
필드가 생성자의 본문에만 적용될 수 있는지 여부를 나타내는 값을 가져옵니다.
public:
property bool IsInitOnly { bool get(); };
public bool IsInitOnly { get; }
member this.IsInitOnly : bool
Public ReadOnly Property IsInitOnly As Boolean
속성 값
필드에 true
특성 집합이 있으면 InitOnly
이고, 그렇지 않으면 false
입니다.
구현
예제
다음 예제에서는 두 개의 필드가 만들어집니다. 두 번째 필드는 읽기 전용이며 set 접근자가 IsInitOnly
없으며 로 설정 true
됩니다.
using namespace System;
using namespace System::Reflection;
//Make two fields, one public and one read-only.
public ref class Myfielda
{
public:
String^ field;
Myfielda()
: field( "A - public field" )
{}
property String^ Field
{
String^ get()
{
return field;
}
void set( String^ value )
{
if ( field != value )
{
field = value;
}
}
}
};
public ref class Myfieldb
{
private:
String^ const field;
public:
Myfieldb()
: field( "B - readonly field" )
{}
property String^ Field
{
String^ get()
{
return field;
}
}
};
int main()
{
Console::WriteLine( "\nReflection.FieldInfo" );
Myfielda^ myfielda = gcnew Myfielda;
Myfieldb^ myfieldb = gcnew Myfieldb;
//Get the Type and FieldInfo.
Type^ MyTypea = Type::GetType( "Myfielda" );
FieldInfo^ Myfieldinfoa = MyTypea->GetField( "field", static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Instance) );
Type^ MyTypeb = Type::GetType( "Myfieldb" );
FieldInfo^ Myfieldinfob = MyTypeb->GetField( "field", static_cast<BindingFlags>(BindingFlags::NonPublic | BindingFlags::Instance) );
//Modify the fields.
//Note that Myfieldb is not modified, as it is
//read-only (IsInitOnly is True).
myfielda->field = "A- modified";
//Myfieldb.field = "B- modified";
//For the first field, get and display the name, field, and IsInitOnly state.
Console::Write( "\n{0} - {1}, IsInitOnly = {2} ", MyTypea->FullName, Myfieldinfoa->GetValue( myfielda ), Myfieldinfoa->IsInitOnly );
//For the second field get and display the name, field, and IsInitOnly state.
Console::Write( "\n{0} - {1}, IsInitOnly = {2} ", MyTypeb->FullName, Myfieldinfob->GetValue( myfieldb ), Myfieldinfob->IsInitOnly );
return 0;
}
using System;
using System.Reflection;
//Make two fields, one public and one read-only.
public class Myfielda
{
public string field = "A - public modifiable field";
}
public class Myfieldb
{
public readonly string field = "B - readonly field";
}
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.Public | BindingFlags.Instance);
Type MyTypeb = typeof(Myfieldb);
FieldInfo Myfieldinfob = MyTypeb.GetField("field",
BindingFlags.Public | BindingFlags.Instance);
//Modify the fields.
//Note that Myfieldb is not modified, as it is
//read-only (IsInitOnly is True).
Myfielda.field = "A - modified";
//Myfieldb.field = "B - modified";
//For the first field, get and display the name, field, and IsInitOnly state.
Console.Write("\n{0} - {1}, IsInitOnly = {2} ",
MyTypea.FullName,
Myfieldinfoa.GetValue(Myfielda),
Myfieldinfoa.IsInitOnly);
//For the second field get and display the name, field, and IsInitOnly state.
Console.Write("\n{0} - {1}, IsInitOnly = {2} ",
MyTypeb.FullName,
Myfieldinfob.GetValue(Myfieldb),
Myfieldinfob.IsInitOnly);
return 0;
}
}
Imports System.Reflection
'Make two fields, one public and one read-only.
Public Class Myfielda
Public field As String = "A - public modifiable field"
End Class
Public Class Myfieldb
Public ReadOnly field As String = "B - readonly field"
End Class
Public Class Myfieldinfo
Public Shared Function Main() As Integer
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("field", _
BindingFlags.Public Or BindingFlags.Instance)
Dim MyTypeb As Type = GetType(Myfieldb)
Dim Myfieldinfob As FieldInfo = MyTypeb.GetField("field", _
BindingFlags.Public Or BindingFlags.Instance)
'Modify the fields.
'Note that Myfieldb is not modified, as it is
'read-only (IsInitOnly is True).
Myfielda.field = "A - modified"
'For the first field, get and display the name, field, and IsInitOnly state.
Console.WriteLine("{0} - {1}, IsInitOnly = {2} ", MyTypea.FullName, _
Myfieldinfoa.GetValue(Myfielda), Myfieldinfoa.IsInitOnly)
'For the second field get and display the name, field, and IsInitOnly state.
Console.WriteLine("{0} - {1}, IsInitOnly = {2} ", MyTypeb.FullName, _
Myfieldinfob.GetValue(Myfieldb), Myfieldinfob.IsInitOnly)
Return 0
End Function 'Main
End Class
이 코드의 결과는 다음과 같습니다.
Reflection.FieldInfo
Myfielda - A- modified, IsInitOnly = False
Myfieldb - B readonly field, IsInitOnly = True
설명
반환된 값이 true
이면 필드는 초기화할 수 있으며 그 이후에는 읽기 전용입니다.
속성을 얻으려면 IsInitOnly
먼저 클래스 Type
를 가져옵니다. 에서 를 Type
가져옵니다 FieldInfo
. 에서 FieldInfo
속성을 가져옵니다 IsInitOnly
. 공용이 아닌 필드에 액세스하려면 메서드에서 및 BindingFlags.Instance 중 BindingFlags.Static 하나 또는 둘 다와 결합 BindingFlags.NonPublic 합니다GetField
.
속성은 IsInitOnly
특성이 FieldAttributes.InitOnly 설정되면 설정됩니다.
적용 대상
추가 정보
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET