FieldInfo.IsInitOnly Eigenschaft

Definition

Ruft einen Wert ab, der angibt, ob das Feld nur im Textkörper des Konstruktors festgelegt werden kann.

public:
 property bool IsInitOnly { bool get(); };
public bool IsInitOnly { get; }
member this.IsInitOnly : bool
Public ReadOnly Property IsInitOnly As Boolean

Eigenschaftswert

truewenn das Feld das InitOnly Attribut festgelegt hat; andernfalls . false

Implementiert

Beispiele

Im folgenden Beispiel werden zwei Felder erstellt. Das zweite Feld ist schreibgeschützt, hat keinen Set-Accessor und IsInitOnly ist auf . true festgelegt.

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

Mit diesem Code wird die folgende Ausgabe generiert:

Reflection.FieldInfo

Myfielda - A- modified, IsInitOnly = False

Myfieldb - B readonly field, IsInitOnly = True

Hinweise

Wenn der zurückgegebene Wert lautet true, kann das Feld nur initialisiert werden und ist anschließend schreibgeschützt.

Um die IsInitOnly Eigenschaft abzurufen, rufen Sie zuerst die Klasse Typeab. Rufen Sie aus dem Type, die FieldInfo. Rufen Sie aus der FieldInfoEigenschaft ab IsInitOnly . Wenn Sie auf ein nicht öffentliches Feld zugreifen möchten, kombinieren Sie BindingFlags.NonPublic entweder oder beides BindingFlags.Static und BindingFlags.Instance in der GetField Methode.

Die IsInitOnly Eigenschaft wird festgelegt, wenn das FieldAttributes.InitOnly Attribut festgelegt wird.

Gilt für:

Weitere Informationen