Freigeben über


Automatisch implementierte Eigenschaften (Visual Basic)

Automatisch implementierte Eigenschaften ermöglichen es Ihnen, schnell eine Eigenschaft einer Klasse anzugeben, ohne dass Sie Code für die Get-Eigenschaft und die Set-Eigenschaft schreiben müssen. Wenn Sie Code für eine automatisch implementierte Eigenschaft schreiben, erstellt der Visual Basic-Compiler automatisch ein privates Feld, um die Eigenschaftsvariable zu speichern. Außerdem werden die zugeordneten Prozeduren Get und Set erstellt.

Mit automatisch implementierten Eigenschaften kann eine Eigenschaft, einschließlich eines Standardwerts, in einer einzelnen Zeile deklariert werden. Das folgende Beispiel veranschaulicht drei Eigenschaftendeklarationen.

Public Property Name As String
Public Property Owner As String = "DefaultName"
Public Property Items As New List(Of String) From {"M", "T", "W"}
Public Property ID As New Guid()

Eine automatisch implementierte Eigenschaft entspricht einer Eigenschaft, deren Eigenschaftswert in einem privaten Feld gespeichert wird. Im folgenden Codebeispiel wird eine automatisch implementierte Eigenschaft gezeigt.

Property Prop2 As String = "Empty"

Im folgenden Codebeispiel wird der entsprechende Code für das vorangegangene Beispiel der automatisch implementierten Eigenschaft gezeigt.

Private _Prop2 As String = "Empty"
Property Prop2 As String
    Get
        Return _Prop2
    End Get
    Set(ByVal value As String)
        _Prop2 = value
    End Set
End Property

Dahinter liegendes Feld

Wenn Sie eine automatisch implementierte Eigenschaft deklarieren, erstellt Visual Basic automatisch ein ausgeblendetes privates Feld, das als dahinter liegendes Feld bezeichnet wird und den Eigenschaftswert enthält. Der Name des dahinter liegenden Felds ist der Name der automatisch implementierten Eigenschaft mit einem vorangestellten Unterstrich (_). Wenn Sie z. B. eine automatisch implementierte Eigenschaft mit dem Namen ID deklarieren, lautet der Name des dahinter liegenden Felds _ID. Wenn Sie einen Member der Klasse einschließen, deren Name ebenfalls _ID lautet, erzeugen Sie einen Namenskonflikt, und Visual Basic meldet einen Compilerfehler.

Das dahinter liegende Feld weist außerdem folgende Eigenschaften auf:

  • Der Zugriffsmodifizierer für das dahinter liegende Feld ist immer Private, selbst wenn die Eigenschaft selbst über eine andere Zugriffsebene verfügt, z. B. Public.

  • Wird die Eigenschaft als Shared markiert, wird das dahinter liegende Feld auch freigegeben.

  • Für die Eigenschaft angegebene Attribute gelten nicht für das dahinter liegende Feld.

  • Auf das dahinter liegende Feld kann von Code innerhalb der Klasse und von Debugtools wie dem Überwachungsfenster zugegriffen werden. Das dahinter liegende Feld wird jedoch nicht in einer IntelliSense-Wortvervollständigungsliste angezeigt.

Initialisieren einer automatisch implementierten Eigenschaft

Jeder Ausdruck, mit dem ein Feld initialisiert werden kann, ist auch für das Initialisieren einer automatisch implementierten Eigenschaft gültig. Wenn Sie eine automatisch implementierte Eigenschaft initialisieren, wird der Ausdruck ausgewertet und an die Set-Prozedur für die Eigenschaft übergeben. In den folgenden Codebeispielen werden einige automatisch implementierte Eigenschaften veranschaulicht, die Anfangswerte einschließen.

Property FirstName As String = "James"
Property PartNo As Integer = 44302
Property Orders As New List(Of Order)(500)

Sie können keine automatisch implementierte Eigenschaft initialisieren, die Member einer Interface ist oder die als MustOverride markiert ist.

Wenn Sie eine automatisch implementierte Eigenschaft als Member einer Structure deklarieren, können Sie die automatisch implementierte Eigenschaft nur dann initialisieren, wenn diese als Shared markiert ist.

Wenn Sie eine automatisch implementierte Eigenschaft als Array deklarieren, können Sie keine expliziten Arraygrenzen angeben. Sie können jedoch mit einem Arrayinitialisierer einen Wert angeben, wie in den folgenden Beispielen gezeigt.

Property Grades As Integer() = {90, 73}
Property Temperatures As Integer() = New Integer() {68, 54, 71}

Eigenschaftendefinitionen, die Standardsyntax erfordern

Automatisch implementierte Eigenschaften sind zweckmäßig und unterstützen viele Programmierszenarien. Es gibt jedoch Situationen, in denen Sie keine automatisch implementierte Eigenschaft verwenden können und stattdessen die standardmäßige oder erweiterte Eigenschaftensyntax verwenden müssen.

Die erweiterte Eigenschaftendefinitionssyntax müssen Sie verwenden, wenn Sie eine der folgenden Aktionen ausführen möchten:

  • Hinzufügen von Code zur Get-Prozedur oder zur Set-Prozedur einer Eigenschaft, z. B. Code zum Überprüfen eingehender Werte in der Set-Prozedur. Sie möchten z. B. überprüfen, dass eine Zeichenfolge, die eine Telefonnummer darstellt, die erforderliche Anzahl von Ziffern enthält, bevor der Eigenschaftswert festgelegt wird.

  • Angeben unterschiedlicher Zugriffsmöglichkeiten für die Get-Prozedur und die Set-Prozedur. Sie möchten z. B. die Set-Prozedur als Private und die Get-Prozedur als Public festlegen.

  • Erstellen von Eigenschaften, die WriteOnly oder ReadOnly sind.

  • Verwenden von parametrisierten Eigenschaften (einschließlich von Default-Eigenschaften). Sie müssen eine erweiterte Eigenschaft deklarieren, um einen Parameter für die Eigenschaft oder zusätzliche Parameter für die Set-Prozedur anzugeben.

  • Platzieren Sie ein Attribut auf dem dahinter liegenden Feld, oder ändern Sie die Zugriffsebene des dahinter liegenden Felds.

  • Bereitstellen von XML-Kommentaren für das dahinter liegende Feld.

Erweitern einer automatisch implementierten Eigenschaft

Wenn Sie eine automatisch implementierte Eigenschaft in eine erweiterte Eigenschaft konvertieren müssen, die eine Get-Prozedur oder eine Set-Prozedur enthält, kann der Visual Basic-Code-Editor die Get-Prozedur und die Set-Prozedur sowie die End Property-Anweisung für die Eigenschaft automatisch generieren. Der Code wird generiert, wenn Sie den Cursor in einer Leerzeile hinter der Property-Anweisung platzieren, ein G (für Get) oder ein S (für Set) eingeben und die EINGABETASTE drücken. Der Visual Basic-Code-Editor generiert automatisch die Get-Prozedur oder die Set-Prozedur für schreibgeschützte und lesegeschützte Eigenschaften, wenn Sie am Ende einer Property-Anweisung die EINGABETASTE drücken.

Siehe auch

Aufgaben

Gewusst wie: Deklarieren und Aufrufen einer Standardeigenschaft in Visual Basic

Gewusst wie: Deklarieren einer Eigenschaft mit gemischten Zugriffsebenen (Visual Basic)

Referenz

Property-Anweisung

ReadOnly (Visual Basic)

WriteOnly (Visual Basic)

Weitere Ressourcen

Objekte und Klassen in Visual Basic

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

Mai 2010

Ein Hinweis zu dahinter liegenden Feldzugriffsebenen wurde hinzugefügt.

Kundenfeedback.