Ok, sto per iniziare con una banalita', soprattutto qui dove vi sono persone in questi dintorni che si cibano di codice C# quotidianamente.
La combinazione di automatic properties e object initializer permette di risparmiare parecchie righe di codice. Ad esempio:
class Program {
static void Main(string[] args) {
Console.WriteLine(new Item { Label = "Patate" });
}
}
public class Item {
public string Label { get; set; }
public override string ToString() {
return Label;
}
}
Leggendo alcuni post ci si chiedeva se non era il caso di introdurre una nuova keyword property in modo da scrivere
public property string Label;
invece di
public string Label { get; set; }
Personalmente preferisco la soluzione scelta dai progettisti C#. Risulta, almeno ai miei occhi, piu' chiara e leggibile. Se infatti un domani dovessi introdurre una constraint di sola lettura della proprieta' pubblica non dovrei far altro che aggiungere un modificatore di proprieta' (accessor):
public class Item {
public Item(string label) {
this.Label = label;
}
public string Label { get; protected set; }
public override string ToString() {
return Label;
}
}
Ovviamente, con questa modifica l'object initializer si va a far benedire. Mica si puo' voler tutto dalla vita, no? :-)