Классы: свойства

Инкапсуляция дает доступ только через публичные методы, а свойства дают возможность реализации гибкого механизма чтения, записи и вычисления приватного поля. Свойства используют элементы доступа 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; }