Compartir a través de


Propiedades implementadas automáticamente (Visual Basic)

Las propiedades implementadas automáticamente permiten especificar rápidamente una propiedad de una clase sin tener que escribir el código para obtener (Get) y establecer (Set) la propiedad. Al escribir código para una propiedad implementada automáticamente, el compilador de Visual Basic crea de forma automática un campo privado para almacenar la variable de propiedad, además de crear los procedimientos Get y Set asociados.

Con las propiedades implementadas automáticamente se puede declarar una propiedad, incluido un valor predeterminado, en una sola línea. En el ejemplo siguiente se muestran tres declaraciones de propiedad.

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()

Una propiedad implementada automáticamente equivale a una propiedad cuyo valor se almacena en un campo privado. En el ejemplo de código siguiente se muestra una propiedad implementada automáticamente.

Property Prop2 As String = "Empty"

En el ejemplo de código siguiente se muestra el código equivalente al del ejemplo de propiedad implementada automáticamente anterior.

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

Campo de respaldo

Cuando se declara una propiedad implementada automáticamente, Visual Basic crea de forma automática un campo privado oculto denominado campo de respaldo que contiene el valor de la propiedad. El nombre del campo de respaldo es igual al nombre de la propiedad implementada automáticamente precedido por un carácter de subrayado (_). Por ejemplo, si declara una propiedad implementada automáticamente denominada ID, el nombre del campo de respaldo será _ID. Si se incluye un miembro de la clase también denominado _ID, se genera un conflicto de nomenclatura y Visual Basic informa de un error del compilador.

El campo de respaldo también tiene las características siguientes:

  • El modificador de acceso del campo de respaldo siempre es Private, incluso cuando la propiedad en sí tiene un nivel de acceso distinto, como Public.

  • Si la propiedad está marcada como Shared, también se comparte el campo de respaldo.

  • Los atributos especificados para la propiedad no se aplican al campo de respaldo.

  • Se puede tener acceso al campo de respaldo desde el código contenido en la clase y desde herramientas de depuración como la ventana Inspección. Sin embargo, dicho campo no se muestra en una lista de finalización de palabras de IntelliSense.

Inicializar una propiedad implementada automáticamente

Cualquier expresión que se pueda usar para inicializar un campo es válida para inicializar una propiedad implementada automáticamente. Al inicializar una propiedad implementada automáticamente, la expresión se evalúa y se pasa al procedimiento Set para la propiedad. En los ejemplos de código siguientes se muestran algunas propiedades implementadas automáticamente que incluyen valores iniciales.

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

No se puede inicializar una propiedad implementada automáticamente que sea miembro de un objeto Interface o que esté marcada como MustOverride.

Al declarar una propiedad implementada automáticamente como miembro de un objeto Structure, dicha propiedad solo se podrá inicializar si se marca como Shared.

Al declarar una propiedad implementada automáticamente como matriz, no se pueden especificar límites de matriz explícitos. Sin embargo, puede proporcionar un valor con un inicializador de matriz, como se muestra en los ejemplos siguientes.

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

Definiciones de propiedades que requieren sintaxis estándar

Las propiedades implementadas automáticamente son fáciles de usar y admiten muchos escenarios de programación. Sin embargo, hay situaciones en las que no se puede usar una propiedad de este tipo y. en su lugar, debe utilizarse sintaxis de propiedades estándar o expandidas.

Si desea realizar una de las acciones siguientes, tiene que usar sintaxis de definición de propiedades expandidas:

  • Agregar código al procedimiento Get o Set de una propiedad, como código para validar los valores de entrada del procedimiento Set. Por ejemplo, puede que desee comprobar que una cadena que representa un número de teléfono contiene la cantidad de números necesaria antes de establecer el valor de la propiedad.

  • Especificar distintos tipos de accesibilidad para los procedimientos Get y Set. Por ejemplo, puede que desee establecer el procedimiento Set como Private y el procedimiento Get como Public.

  • Crear propiedades de tipo WriteOnly o ReadOnly.

  • Usar propiedades parametrizadas (incluidas las propiedades Default). Para especificar un parámetro para la propiedad o especificar parámetros adicionales para el procedimiento Set se debe declarar una propiedad expandida.

  • Colocar un atributo en el campo de respaldo o cambiar el nivel de acceso del campo de respaldo.

  • Proporcionar comentarios XML para el campo de respaldo.

Expandir una propiedad implementada automáticamente

Si tiene que convertir una propiedad implementada automáticamente en una propiedad expandida que contiene un procedimiento Get o Set, el Editor de código de Visual Basic puede generar automáticamente los procedimientos Get y Set y la instrucción End Property para la propiedad. Para generar el código, se coloca el cursor en una línea en blanco después de la instrucción Property, se escribe G (para Get) o S (para Set) y se presiona ENTRAR. El Editor de código de Visual Basic genera automáticamente el procedimiento Get o Set para las propiedades de solo lectura y de solo escritura al presionar ENTRAR al final de una instrucción Property.

Vea también

Tareas

Cómo: Declarar y llamar a una propiedad predeterminada en Visual Basic

Cómo: Declarar una propiedad con niveles de acceso mixtos (Visual Basic)

Referencia

Property (Instrucción)

ReadOnly (Visual Basic)

WriteOnly (Visual Basic)

Otros recursos

Objetos y clases de Visual Basic

Historial de cambios

Fecha

Historial

Motivo

Mayo de 2010

Nota adicional sobre los niveles de acceso del campo de respaldo.

Comentarios de los clientes.