Compartir a través de


Propiedades y procedimientos de propiedad

Actualización: noviembre 2007

Se pueden utilizar tanto propiedades como campos para almacenar información en un objeto. Mientras que los campos son simplemente variables públicas, las propiedades utilizan procedimientos de propiedad para controlar cómo se establecen y devuelven valores. Los procedimientos de propiedad son bloques de código declarados dentro de las definiciones de propiedad que puede ejecutar código cuando se establece o recupera el valor de una propiedad.

Visual Basic tiene dos tipos de procedimientos de propiedad: los procedimientos de propiedad Get para recuperar un valor de una propiedad y los procedimientos de propiedad Set para asignar un valor a una propiedad. Por ejemplo, una propiedad que almacena el saldo de una cuenta bancaria podría utilizar código en un procedimiento de propiedad Get para notificar el interés y comprobar comisiones por servicios antes de devolver el saldo disponible. Puede utilizar luego el procedimiento de propiedad Set para validar el balance y evitar que se actualice incorrectamente. Es decir, los procedimientos de propiedad permiten a un objeto proteger y validar sus propios datos.

En el siguiente fragmento de código se compara el modo en el que los campos y propiedades validan los valores.

Protected Sub TestFieldsAndProperties()
    ' Assume, for this example, that the only valid values for
    ' the field and property are numbers less than 10.
    Dim NewClass As New ThisClass

    ' Test data validation. 

    ' Works because there is no data validation.
    NewClass.ThisField = 36
    ' Will print 36.
    MsgBox("ThisField = " & NewClass.ThisField)

    ' The attempt to set the field to a value greater than 10 will silently fail.
    NewClass.ThisProperty = 36
    ' The next statement will print the old value of 0 instead.
    MsgBox("ThisProperty = " & NewClass.ThisProperty)
End Sub

Public Class ThisClass
    ' Declare a field.
    Public ThisField As Integer
    ' Field used for Property Set operations.
    Private thisPropertyValue As Integer = 0
    ' Declare a property.
    Public Property ThisProperty() As Integer
        Get
            Return thisPropertyValue
        End Get
        Set(ByVal Value As Integer)
            ' Only allow Set operation for values less than 10.
            If Value < 10 Then thisPropertyValue = Value
        End Set
    End Property
End Class

El procedimiento TestFieldsAndProperties crea una instancia de la clase, y establece y recupera los valores de los campos y propiedades. En este ejemplo se asume que los únicos valores válidos son números menores de 10. Dado que no hay forma de validar los valores asignados a los campos, es posible establecer en el campo el valor 36. No obstante, la propiedad solamente realiza asignaciones para números menores de 10, de modo que el intento de establecer 36 en el campo no se tiene en cuenta.

Propiedades de sólo lectura y escritura

La mayoría de las propiedades tienen procedimientos de propiedad Get y Set que puede utilizar para leer y modificar el valor que almacenan. No obstante, puede utilizar los modificadores ReadOnly y WriteOnly para restringir la modificación o la lectura de las propiedades.

Las propiedades de sólo lectura no pueden tener procedimientos de propiedad Set; estas propiedades son útiles para elementos que desea exponer, pero cuya modificación no desea permitir. Por ejemplo, podría utilizar una propiedad de sólo lectura para proporcionar la velocidad del procesador de un equipo.

Las propiedades de sólo escritura no pueden tener procedimientos de propiedad Get y son útiles para configurar objetos con datos que no deben o no se pueden almacenar en el objeto. Por ejemplo, se puede utilizar una propiedad de sólo escritura para tomar una contraseña y cambiar el estado del objeto sin almacenar la contraseña.

Nota:

Las versiones anteriores de Visual Basic admiten procedimientos de propiedad Let que se utilizan al asignar objetos a las propiedades. Visual Basic elimina la necesidad de procedimientos de propiedad Let porque la asignación de objetos se controla como cualquier otro tipo de asignación.

Vea también

Conceptos

Procedimientos de propiedad

Comparación de procedimientos de propiedades y campos

Referencia

Get (Instrucción)

Instrucción Set (Visual Basic)

ReadOnly (Visual Basic)

WriteOnly