Spesso ci viene detto che dovremmo proteggere l'incapsulamento rendendo i metodi getter e setter (proprietà in C#) per i campi classe, invece di esporre i campi al mondo esterno.Campi pubblici contro Proprietà automatiche
Ma ci sono molte volte in cui un campo è solo lì per contenere un valore e non richiede alcun calcolo da ottenere o impostare. Per questi saremmo tutti fare questo numero:
public class Book
{
private string _title;
public string Title
{
get{ return _title; }
set{ _title = value; }
}
}
Beh, ho una confessione, non potevo sopportare scrivere tutto ciò che (in realtà, non è stato dover scrivere, è stato dover guardare), quindi sono diventato canaglia e ho usato campi pubblici.
poi arriva C# 3.0 e vedo hanno aggiunto le proprietà automatiche:
public class Book
{
public string Title {get; set;}
}
che è più ordinato, e sono grato per questo, ma in realtà, ciò che è così diverso da solo facendo un campo pubblico?
public class Book
{
public string Title;
}
possibile duplicato di [Differenza tra proprietà e campo in C# .NET 3.5+] (http://stackoverflow.com/questions/653536/difference-between-property-and-field-in-c-sharp-net- 3-5) – nawfal
Ho convertito una proprietà in una proprietà solo così ho potuto impostare un punto di interruzione sul setter –
Tendo a fare qualcosa che non è una proprietà privata perché realizzando la strada che devo rifattorizzare un campo in una proprietà ha portare a qualche mal di testa inutile. [Proprietà, campi e metodi. Oh My!] (Http://www.codeducky.org/properties-fields-and-methods-oh-my/) richiama un'incompatibilità che mi ha morso in passato. –