В чем преимущество:
public string User {get; set;}
над
public string User;
Поскольку в первом случае вы не можете получить доступ к частному члену, чем это отличается от того, чтобы просто сделать вашу собственность общедоступной?
В чем преимущество:
public string User {get; set;}
над
public string User;
Поскольку в первом случае вы не можете получить доступ к частному члену, чем это отличается от того, чтобы просто сделать вашу собственность общедоступной?
Во втором примере делается общедоступным поле, а не свойство (ваш вопрос). Это обеспечивает простой способ создания простых свойств. По умолчанию должны использоваться свойства, а не общедоступные поля; список причин бесконечен, но начинается с:
ой - а я упоминал инкапсуляцию?
Переход от поля к свойству постфактум является критическим изменением, особенно если вы используете много кода "ref" или изменяемых структур (да).
При изменении значения User может потребоваться ряд действий. Вещи, о которых вы не знаете заранее или которых нет в то время, когда вы разрабатываете свои классы. Например, однажды вы понимаете, что значение пользователя должно быть не менее 5 символов. При наличии и собственности это несложно реализовать. Если у вас есть общедоступное поле, вы должны изменить его на свойство и перекомпилировать весь зависимый код.
По сути, я думаю, что стоит явно разделить общедоступную / API-часть наших типов и частные детали реализации.
Кто-то упомянул инкапсуляцию? ;)