En C#, puedo tener una propiedad sin tener que declarar una variable privada. Mi código de VB6 que se parecía a esteobtener; conjunto; sintaxis en C#
'local variable(s) to hold property value(s)
Private mvarPhoneNumber As String 'local copy
Public Property Let PhoneNumber(ByVal vData As String)
'used when assigning a value to the property, on the left side of an assignment.
'Syntax: X.PhoneNumber = 5
mvarPhoneNumber = vData
End Property
Public Property Get PhoneNumber() As String
'used when retrieving value of a property, on the right side of an assignment.
'Syntax: Debug.Print X.PhoneNumber
PhoneNumber = mvarPhoneNumber
End Property
ahora puede tener este aspecto.
public string PhoneNumber{get;set;}
¿Cómo puedo poner la validación en los métodos getter y setter en C#? Intenté agregar una validación como esta.
public string PhoneNumber
{
get
{
return PhoneNumber;
}
set
{
if (value.Length <= 30)
{
PhoneNumber = value;
}
else
{
PhoneNumber = "EXCEEDS LENGTH";
}
}
}
La parte de este código no se compilará. ¿Debo volver a utilizar una variable privada?
Como dijo Andrew, deberá crear una variable privada para la propiedad. La característica de propiedades automáticas de C# hace esto detrás de escena para usted, pero no puede acceder a esa variable privada de esa manera. tiene que declarar explícitamente que hace algo con él (como validarlo) – Chris
Además, asegúrese de establecer el campo de respaldo en su setter o se ejecutará en una StackOverflowException en tiempo de ejecución. –
No sé si simplemente está simplificando por poner un ejemplo, pero establecer ciegamente una propiedad con un nuevo valor en lugar de arrojar una ArgumentException parece bastante complicado. –