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 código en Get y Set la propiedad . Al escribir código para una propiedad implementada automáticamente, el compilador de Visual Basic crea automáticamente un campo privado para almacenar la variable de propiedad además de crear los procedimientos y Set asociadosGet.

Con las propiedades implementadas automáticamente, una propiedad, incluido un valor predeterminado, se puede declarar 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 es equivalente a una propiedad para la que el valor de propiedad 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 para el ejemplo de propiedad implementado 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

En el código siguiente se muestran las propiedades de solo lectura implementadoras:

Class Customer  
   Public ReadOnly Property Tags As New List(Of String)  
   Public ReadOnly Property Name As String = ""  
   Public ReadOnly Property File As String  
  
   Sub New(file As String)  
      Me.File = file  
   End Sub  
End Class  

Se pueden realizar asignaciones a la propiedad con expresiones de inicialización, como se muestra en el ejemplo, o se pueden realizar asignaciones a las propiedades en el constructor del tipo contenedor. Siempre que lo desee, puede realizar asignaciones a los campos de respaldo de propiedades de solo lectura.

Campo de respaldo

Al declarar una propiedad implementada automáticamente, Visual Basic crea automáticamente un campo privado oculto denominado campo de respaldo para contener el valor de propiedad. El nombre del campo de respaldo es el nombre de propiedad implementado automáticamente precedido por un carácter de subrayado (_). Por ejemplo, si declara una propiedad implementada automáticamente denominada ID, el campo de respaldo se denomina _ID. Si se incluye un miembro de la clase que también se denomina _ID, se produce un conflicto de nomenclatura y Visual Basic informa de un error del compilador.

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

  • El modificador de acceso del campo de respaldo siempre es Private, incluso cuando la misma propiedad tiene un nivel de acceso diferente, 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.

  • El acceso al campo de respaldo se puede realizar 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.

Inicialización de 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 Set procedimiento de 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 Interfaceo que esté marcado como MustOverride.

Cuando se declara una propiedad implementada automáticamente como miembro de , Structuresolo se puede inicializar la propiedad implementada automáticamente si está marcada como Shared.

Cuando se declara una propiedad implementada automáticamente como una matriz, no se pueden especificar límites de matriz explícitos. Sin embargo, se 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 cómodas y admiten muchos escenarios de programación. Sin embargo, hay situaciones en las que no se puede usar una propiedad implementada automáticamente y, en su lugar, debe usar la sintaxis de propiedad estándar o expandida.

Si desea realizar una de las acciones siguientes, tiene que usar la 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 si una cadena que representa un número de teléfono contiene la cantidad de números necesaria antes de establecer el valor de 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.

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

  • 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 Get procedimiento o Set , el Editor de código de Visual Basic puede generar automáticamente los procedimientos y Set y End Property la Get instrucción para la propiedad . Para generar el código, se coloca el cursor en una línea en blanco a continuación de la instrucción Property, se escribe una G (para Get) o una 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.

Consulte también