2012-07-06 9 views
10

Non sono sicuro perché in getter/setter Java sono un po 'diversi, ma qual è il "modo c" per codificare questa roba?Come devo usare Proprietà in C#?

Opzione a.)

private string name; 

    public string Name 
    { 
     get { return name; } 
     set { name = value; } 
    } 

    private int time; 

    public int Time 
    { 
     get { return time; } 
     set { time = value; } 
    } 

b.)

private string _name; 
    private int _time; 

    public string name 
    { 
     get { return _name; } 
     set { _name = value; } 
    } 

    public int time 
    { 
     get { return _time; } 
     set { _time = value; } 
    } 

c.)

public string name {get; set;} 
    public int time {get; set;} 

Ok ci sono alcuni esempi. Cosa sarebbe meglio? Devo scrivere prima tutte le dichiarazioni delle variabili private poi le proprietà o dovrei raggruppare la mia variabile e la dichiarazione di proprietà l'una accanto all'altra.

risposta

26

ne dite d, a seguito di convenzioni di denominazione NET:

public string Name { get; set; } 
public int Time { get; set; } // Odd type for time, admittedly... 

non si preoccupano scrivere la proprietà manualmente da soli se non si fa qualcosa di non banale in esso.

Se fai scrivere l'attuazione di proprietà manualmente, tocca a voi come è il nome della variabile privata. Personalmente userei:

private string name; 
public string Name 
{ 
    get { /* whatever */ } 
    set { /* whatever */ } 
} 

... ma se si desidera utilizzare caratteri di sottolineatura, questa è la tua prerogativa.

Per quanto riguarda l'ordinazione dei membri, è ancora più una tua scelta. Supponendo che tu stia lavorando con una squadra, parli con il team e vedi qual è la convenzione locale.

3

Nel tuo caso specifico (nessuna logica sul getter o setter) l'opzione migliore è C (con una piccola modifica sulla proprietà nomi di seguire gli standard C#)

public string Name {get; set;} 
public int Time {get; set;} 
11

Se non è necessario l'accesso al sottostanti i campi di supporto, quindi le proprietà automatiche sono il modo suggerito che è (C). Tuttavia, in base alla convenzione di denominazione .NET, dovrebbero essere PascalCase.

public string Name { get; set; } 
public int Time { get; set; } 
1
public string Name {get; set;} 
public int Time {get; set;} 
6

I primi due sono solo denominazione convensions che si dovrebbe scegliere in base al/gruppo dev azienda o la propria decisione.

Il terzo caso è il modo più breve per decalificare la stessa proprietà, in cui l'effettivo field verrà generato dal runtime stesso.

Brevi pro: è breve e facile.

contro brevi: non può mettere qualcosa all'interno Geter/setter, non può mettere breakpoint in Visual Studio ...

Spero che questo aiuti.

3

Dipende dal caso, quando si definiscono i campi viene utilizzato un carattere di sottolineatura, e se si ha solo bisogno di un semplice getter/setter non è necessario definire i campi da soli perché il compilatore li definirà per voi in background .

2

Vorrei andare per l'opzione, molti altri già pubblicati.

public string Name {get; set;} 
public int Time {get; set;} 

Nota, che è possibile apportare modifiche al livello di protezione sul setter e sul getter singolarmente, ad es.

public string Name {get; protected set;} 
protected int Time {get; private set;} 

È possibile utilizzare solo una protezione superiore a quella applicata alla proprietà del foro.