2010-05-09 7 views
5

ho familiarità con questa nuova zucchero sintassi:Qual è la sintassi in C# per la creazione di setter e getter?

public string Name { get; set; } 

Ma cosa succede se io ero il setter di tale variabile per avere una sorta di controllo. Ad esempio, voglio convertire l'intera stringa che dovrebbe essere impostata su tutti i caratteri minuscoli.

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

risposta

11

Avrete bisogno di un campo di supporto sia per il getter e setter (non si può avere una proprietà in parte automatico):

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

Non è possibile definire una proprietà in parte automatico. Dovresti fare le cose alla vecchia maniera: definire il backing field e implementare la logica getter and setter da solo.

3
private string _name; 

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

_There _are _guidelines _perquesto - _non _utilizzare _scorri. –

+0

@Callum Rogers - Ahahahaaha .. In una mattina altrimenti schifosa, questo mi ha fatto sorridere. –

1

Quindi non è possibile utilizzare l'auto generata get/set caratteristica:

string _name; 

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

public string Name { get; set; } Questi sono chiamati Proprietà Auto implementate. In C# 3 e versioni successive è possibile utilizzare questa sintassi per la proprietà. Ma se si desidera eseguire qualsiasi operazione sul valore prima dell'impostazione, non è utile. Un altro svantaggio è che devi usare entrambi i set e ottenere, non puoi dichiarare solo getter. Alternativo è rendere privato il setter. Nel tuo caso, devi usare la versione precedente delle proprietà.

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