2010-05-09 32 views
5

estoy familiarizado con esta nueva sintaxis de azúcar:¿Cuál es la sintaxis en C# para crear setters y getters?

public string Name { get; set; } 

Pero lo que si yo era el colocador de esa variable a tener algún tipo de comprobación. Por ejemplo, quiero convertir toda la cadena que se supone que está configurada en todas las minúsculas.

public string Name 
{ 
    get; 
    set 
    { 
     ???? 
    } 
} 

Respuesta

11

Tendrá un campo respaldo tanto para el getter y setter (no se puede tener una propiedad parcialmente automática):

private string name; 
public string Name 
{ 
    get 
    { 
    return name; 
    } 
    set 
    { 
    // do validation or other stuff 
    name = value.ToLower(); 
    } 
} 
4

No se puede definir una propiedad parcialmente automático. Tendría que hacer las cosas a la vieja usanza: defina el campo de respaldo e implemente la lógica getter y setter usted mismo.

3
private string _name; 

public string Name 
{ 
    get {return _name;} 
    set 
    { 
    _name = value.ToLower(); 
    } 
} 
+1

_Hay _are _guidelines _for _this - _don't _use _underscores. –

+0

@Callum Rogers - Ahahahaaha .. En una mañana de otra manera horrible, esto me trajo una sonrisa a la cara. –

1

Entonces no se puede utilizar el auto generada obtener/establecer característica:

string _name; 

public string Name { 
    set { _name = value.ToLower(); } 
    set { return _name; } 
} 
0

public string Name { get; set; } Estos se llaman propiedades implementadas automático. En C# 3 y posteriores puede usar esta sintaxis para la propiedad. Pero si desea realizar cualquier operación sobre el valor antes de la configuración, esto no es útil. Una desventaja más es que tienes que usar tanto set como get, no puedes declarar solo getter. Alternativo es hacer que el colocador sea privado. En su caso, debe usar la versión anterior de las propiedades.

private string _name; 
public string Name 
{ 
    get {return _name;} 
    set 
    { 
     //do any operation 
    _name = value.ToLower(); 
    } 
} 
Cuestiones relacionadas