2011-01-28 14 views
48

Voglio fare questo:Proprietà C#: come utilizzare la proprietà set personalizzata senza campo privato?

public Name 
{ 
    get; 
    set 
    { 
     dosomething(); 
     ??? = value 
    } 
} 

E 'possibile utilizzare il campo privato generato automaticamente?
O è necessario che a implementare in questo modo:

private string name; 
public string Name 
{ 
    get 
    { 
     return name; 
    } 
    set 
    { 
     dosomething(); 
     name = value 
    } 
} 
+1

C'è un sacco di buona discussione su questo in questo SO domanda: http://stackoverflow.com/questions/1277018/c-3-0-automatic- proprietà-quale-sarebbe-il-nome-della-variabile-privata-creare –

risposta

60

Una volta che si desidera fare qualcosa di personalizzato nel getter o nel setter non è più possibile utilizzare le proprietà automatiche.

13

Questo non è possibile. Proprietà auto implementate o codice personalizzato.

3

È necessario implementarlo completamente dato lo scenario. Entrambi get e set devono essere implementati automaticamente o completamente implementati insieme, non una combinazione dei due.

14

Si può provare qualcosa di simile:

public string Name { get; private set; } 
public void SetName(string value) 
{ 
    DoSomething(); 
    this.Name = value; 
} 
+4

+1 A mio parere questa risposta rimprovera la risposta accettata. Sta usando le proprietà automatiche. Imposta esplicitamente setter su privato. Questa è una buona cosa perché consente all'utente finale o allo sviluppatore di sapere che è probabile che succeda qualcosa di più del metodo setter. – ooXei1sh

Problemi correlati