Инкапсуляция дает доступ только через публичные методы, а свойства дают возможность реализации гибкого механизма чтения, записи и вычисления приватного поля. Свойства используют элементы доступа get, set.
class Person { private string name; public string Name { get { return name; } set { name = value; } // тут можно прописать условия, а не просто присваивание } } // Закомментированный код ниже заменяет весь код внутри класса Person // public string Name { get; set; } static void Main(string[] args) { Person p = new Person(); p.Name = "Bobik"; Console.WriteLine(p.Name); }
Свойства могут называться как угодно, но принято для понимания кода называть их по имени переменной, но только с большой буквы: name => Name.
Также есть автоматически реализуемые свойства (краткая запись, если нет необходимости реализовать логику в set).
public string Name { get; set; }