Mi chiedevo quali fossero le differenze tra queste dichiarazioni di getter e setter e se c'è un metodo preferito (e perché). Il primo può essere generato automaticamente da Visual Studio. E gli altri? Grazie
1°
string _myProperty { get; set; }
2°
string _myProperty;
public string myProperty
{
get { return _myProperty; }
set { _myProperty = value; }
}
3°
string _myProperty;
public string getMyProperty()
{
return this._myProperty;
}
public void setMyProperty(string value)
{
this._myProperty = value;
}
Beh, il primo e il secondo generano entrambi qualcosa come il terzo alla fine. Tuttavia, non usate il terzo quando avete una sintassi per le proprietà.
Infine, se non avete lavoro da fare nel get
o set
, allora usate il primo.
Alla fine, il primo e il secondo sono solo una forma di zucchero sintattico, ma perché codificare più di quello che è necessario.
// more code == more bugs
E solo per divertirsi un po', considerate questo:
public string A { get; private set; }
Ora questo è molto più diretto, vero? Il modificatore public
è implicato sia nel get
che nel set
, ma può essere sovrascritto. Questa sarebbe naturalmente la stessa regola per qualsiasi modificatore usato quando si definisce la proprietà stessa.
Cominciamo con 3. Non funzionerebbe. La funzione public getMyProperty()
non ha un tipo di ritorno.
E il numero 1 e 2 sono in realtà le stesse cose. 2 è ciò che il numero 1 diventa dopo la compilazione.
Quindi 1 e 2 sono le stesse cose. con due puoi avere qualche convalida o caching nel tuo modello.
A parte questo, diventano la stessa cosa.