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, comoPublic
.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 Interface
o que esté marcado como MustOverride
.
Cuando se declara una propiedad implementada automáticamente como miembro de , Structure
solo 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
oSet
de una propiedad, como código para validar los valores de entrada del procedimientoSet
. 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
ySet
. Por ejemplo, puede que desee establecer el procedimientoSet
comoPrivate
y el procedimientoGet
comoPublic
.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 procedimientoSet
.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
.