Eigenschaftenprozeduren (Visual Basic)Property Procedures (Visual Basic)

Eine Eigenschaftenprozedur ist eine Reihe von Visual Basic-Anweisungen, die eine benutzerdefinierte Eigenschaft in einem Modul, Klasse oder Struktur zu ändern.A property procedure is a series of Visual Basic statements that manipulate a custom property on a module, class, or structure. -Eigenschaftenprozeduren werden, auch bekannt als Eigenschaftenaccessoren.Property procedures are also known as property accessors.

Visual Basic bietet für die folgenden Verfahren für die Eigenschaft:Visual Basic provides for the following property procedures:

  • Ein Get Prozedur gibt den Wert einer Eigenschaft zurück.A Get procedure returns the value of a property. Wird aufgerufen, wenn Sie die Eigenschaft in einem Ausdruck zugreifen.It is called when you access the property in an expression.

  • Ein Set Prozedur setzt eine Eigenschaft auf einen Wert fest.A Set procedure sets a property to a value, including an object reference. Wird aufgerufen, wenn Sie die Eigenschaft einen Wert zuweisen.It is called when you assign a value to the property.

Sie Eigenschaftenprozeduren in der Regel paarweise mit definieren die Get und Set -Anweisungen, aber Sie können auch einzeln definiert, wenn die Eigenschaft schreibgeschützt ist (Get Statement) oder nur Schreibzugriff (festlegen Anweisung).You usually define property procedures in pairs, using the Get and Set statements, but you can define either procedure alone if the property is read-only (Get Statement) or write-only (Set Statement).

Können Sie weglassen der Get und Set Verfahren, wenn Sie eine automatisch implementierte Eigenschaft zu verwenden.You can omit the Get and Set procedure when using an auto-implemented property. Weitere Informationen finden Sie unter Automatisch implementierte Eigenschaften.For more information, see Auto-Implemented Properties.

Sie können Eigenschaften in Klassen, Strukturen und Module definieren.You can define properties in classes, structures, and modules. Eigenschaften sind Public standardmäßig die bedeutet, dass Sie von überall aus aufrufen können in Ihrer Anwendung, die Container der Eigenschaft zugreifen können.Properties are Public by default, which means you can call them from anywhere in your application that can access the property's container.

Einen Vergleich von Eigenschaften und Variablen finden Sie unter Unterschiede zwischen Eigenschaften und Variablen in Visual Basic.For a comparison of properties and variables, see Differences Between Properties and Variables in Visual Basic.

DeklarationssyntaxDeclaration Syntax

Eine Eigenschaft selbst wird durch einen Codeblock eingefasst definiert die Property Statement und End Property Anweisung.A property itself is defined by a block of code enclosed within the Property Statement and the End Property statement. Innerhalb dieses Blocks an, die für jede Eigenschaftenprozedur als interner Block einer deklarationsanweisung angegeben eingefasst wird angezeigt (Get oder Set) und den entsprechenden End Deklaration.Inside this block, each property procedure appears as an internal block enclosed within a declaration statement (Get or Set) and the matching End declaration.

Die Syntax zum Deklarieren einer Eigenschaft und die zugehörigen Prozeduren ist wie folgt aus:The syntax for declaring a property and its procedures is as follows:

[Default] [Modifiers] Property PropertyName[(ParameterList)] [As DataType]  
    [AccessLevel] Get  
        ' Statements of the Get procedure.  
        ' The following statement returns an expression as the property's value.  
        Return Expression  
    End Get  
    [AccessLevel] Set[(ByVal NewValue As DataType)]  
        ' Statements of the Set procedure.  
        ' The following statement assigns newvalue as the property's value.  
        LValue = NewValue  
    End Set  
End Property  
- or -  
[Default] [Modifiers] Property PropertyName [(ParameterList)] [As DataType]  

Die Modifiers festlegbaren Zugriffsebene und Informationen zu überladen, überschreiben, freigeben und shadowing, sowie, ob die Eigenschaft schreibgeschützt oder lesegeschützt ist.The Modifiers can specify access level and information regarding overloading, overriding, sharing, and shadowing, as well as whether the property is read-only or write-only. Die AccessLevel auf die Get oder Set Prozedur kann jeder Ebene, die restriktiver ist als die Zugriffsebene für die Eigenschaft selbst angegeben sein.The AccessLevel on the Get or Set procedure can be any level that is more restrictive than the access level specified for the property itself. Weitere Informationen finden Sie unter Property Statement.For more information, see Property Statement.

DatentypData Type

Der Datentyp einer Eigenschaft und der Dienstprinzipal Zugriff auf werden definiert, der Property -Anweisung nicht in der Eigenschaftenprozeduren.A property's data type and principal access level are defined in the Property statement, not in the property procedures. Eine Eigenschaft kann nur einen Datentyp verfügen.A property can have only one data type. Angenommen, Sie eine Eigenschaft zum Speichern von definieren können kein Decimal Wert aber Abrufen einer Double Wert.For example, you cannot define a property to store a Decimal value but retrieve a Double value.

ZugriffsebeneAccess Level

Allerdings können Sie definieren einen Dienstprinzipal Zugriff auf für eine Eigenschaft und die Zugriffsebene in einer der Eigenschaftenprozeduren weiter einzuschränken.However, you can define a principal access level for a property and further restrict the access level in one of its property procedures. Beispielsweise können Sie definieren eine Public Eigenschaft, und klicken Sie dann definieren Sie eine Private Set Verfahren.For example, you can define a Public property and then define a Private Set procedure. Die Get Prozedur bleibt Public.The Get procedure remains Public. Sie können die Zugriffsebene in eine der Prozeduren für eine Eigenschaft ändern können, und Sie nur es restriktiver ist als die Zugriffsebene des dienstprinzipals.You can change the access level in only one of a property's procedures, and you can only make it more restrictive than the principal access level. Weitere Informationen finden Sie unter Vorgehensweise: Deklarieren Sie eine Eigenschaft mit gemischten Zugriffsebenen.For more information, see How to: Declare a Property with Mixed Access Levels.

ParameterdeklarationParameter Declaration

Jeder Parameter deklariert die gleiche Weise für Sub-Prozeduren, außer dass muss der Übergabemechanismus sein ByVal.You declare each parameter the same way you do for Sub Procedures, except that the passing mechanism must be ByVal.

Die Syntax für jeden Parameter in der Liste der Parameter lautet wie folgt aus:The syntax for each parameter in the parameter list is as follows:

[Optional] ByVal [ParamArray] parametername As datatype

Wenn der Parameter optional ist, müssen Sie auch einen Standardwert als Teil der Deklaration angeben.If the parameter is optional, you must also supply a default value as part of its declaration. Die Syntax zum Angeben der Standardwert ist wie folgt aus:The syntax for specifying a default value is as follows:

Optional ByVal parametername As datatype = defaultvalue

EigenschaftswertProperty Value

In einem Get Verfahren der Rückgabewert dem aufrufenden Ausdruck als Wert der Eigenschaft angegeben wird.In a Get procedure, the return value is supplied to the calling expression as the value of the property.

In einem Set Verfahren wird der neue Eigenschaftswert auf den Parameter übergeben die Set Anweisung.In a Set procedure, the new property value is passed to the parameter of the Set statement. Wenn Sie einen Parameter explizit deklarieren, müssen Sie es mit dem gleichen Datentyp wie die Eigenschaft deklarieren.If you explicitly declare a parameter, you must declare it with the same data type as the property. Wenn Sie keinen Parameter deklarieren, verwendet der Compiler die impliziten Parameter Value zur Darstellung des neuen Wert der Eigenschaft zugewiesen werden.If you do not declare a parameter, the compiler uses the implicit parameter Value to represent the new value to be assigned to the property.

Die Syntax aufrufenCalling Syntax

Sie aufrufen eine Eigenschaftenprozedur implizit durch einen Verweis auf die Eigenschaft.You invoke a property procedure implicitly by making reference to the property. Sie verwenden den Namen der Eigenschaft, die gleiche Weise, die Sie verwenden den Namen einer Variablen mit dem Unterschied, dass Sie Werte für alle Argumente angeben müssen, die nicht optional sind, und müssen Sie die Argumentliste in Klammern einschließen.You use the name of the property the same way you would use the name of a variable, except that you must provide values for all arguments that are not optional, and you must enclose the argument list in parentheses. Wenn keine Argumente angegeben werden, können Sie die Klammern optional weglassen.If no arguments are supplied, you can optionally omit the parentheses.

Die Syntax für einen impliziten Aufruf einer Set Verfahren lautet wie folgt:The syntax for an implicit call to a Set procedure is as follows:

propertyname[(argumentlist)] = expression

Die Syntax für einen impliziten Aufruf einer Get Verfahren lautet wie folgt:The syntax for an implicit call to a Get procedure is as follows:

lvalue = propertyname[(argumentlist)]

Do While (propertyname[(argumentlist)] > expression)

Abbildung der Deklaration und AufrufIllustration of Declaration and Call

Die folgende Eigenschaft speichert einen vollständigen Namen als zwei enthaltenen Namen, der Vorname und Nachname.The following property stores a full name as two constituent names, the first name and the last name. Wenn der aufrufende Code liest fullName, Get Prozedur kombiniert die beiden zugehörigen Namen und gibt den vollständigen Namen zurück.When the calling code reads fullName, the Get procedure combines the two constituent names and returns the full name. Wenn der aufrufende Code einen neuen vollständigen Namen, weist der Set Prozedur versucht, die in zwei enthaltenen Namen aufzulösen.When the calling code assigns a new full name, the Set procedure attempts to break it into two constituent names. Wenn sie ein Leerzeichen nicht gefunden wird, es alle als den ersten Namen gespeichert.If it does not find a space, it stores it all as the first name.

Dim firstName, lastName As String
Property fullName() As String
    Get
      If lastName = "" Then
          Return firstName
      Else
          Return firstName & " " & lastName
      End If

    End Get
    Set(ByVal Value As String)
        Dim space As Integer = Value.IndexOf(" ")
        If space < 0 Then
            firstName = Value
            lastName = ""
        Else
            firstName = Value.Substring(0, space)
            lastName = Value.Substring(space + 1)
        End If
    End Set
End Property

Das folgende Beispiel zeigt die typischen Aufrufe an die Eigenschaftenprozeduren von fullName.The following example shows typical calls to the property procedures of fullName.

fullName = "MyFirstName MyLastName"
MsgBox(fullName)

Siehe auchSee also