Нам часто говорят, что мы должны защищать инкапсуляцию, создавая методы getter и setter (свойства в С#) для полей класса, вместо того, чтобы подвергать поля внешнему миру.
Но есть много раз, когда поле находится там, где нужно хранить значение и не требует каких-либо вычислений для получения или установки. Для этого мы все сделаем это число:
public class Book
{
private string _title;
public string Title
{
get{ return _title; }
set{ _title = value; }
}
}
Хорошо, у меня исповедь, я не мог писать все это (на самом деле, это не нужно было писать, нужно было смотреть на нее), поэтому я пошел изгоев и использовал публичные поля.
Затем идет С# 3.0, и я вижу, что они добавили автоматические свойства:
public class Book
{
public string Title {get; set;}
}
который является более аккуратным, и я благодарен за это, но на самом деле, что не так просто, как просто создание публичного поля?
public class Book
{
public string Title;
}