Я сейчас беру класс С#, и я пытаюсь найти лучший способ сделать что-то. Я исхожу из фона Java, поэтому я знаком с лучшими практиками Java; Я новичок на С#!
В Java, если у меня есть частная собственность, я делаю это:
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
В С# я вижу, что есть много способов сделать это.
Я могу сделать это, как Java:
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
Или я могу сделать это следующим образом:
private string name;
public string Name {
get { return name; }
set { name = value; }
}
Или:
public string Name { get; set; }
Какую пользу я должен использовать, и каковы предубеждения или тонкости, связанные с каждым подходом? При создании классов я следую общим передовым практикам, которые я знаю из Java (особенно, если вы читаете "Эффективная Java" ). Так, например, я предпочитаю неизменность (предоставление сеттеров только тогда, когда это необходимо). Мне просто интересно узнать, как эти практики вписываются в различные способы предоставления сеттеров и геттеров в С#; в основном, как мне перевести лучшие практики из мира Java в С#?
ИЗМЕНИТЬ
Я публиковал это как комментарий к ответу Джона Скита, но потом он получил много времени:
Как насчет нетривиального свойства (т.е. со значительной обработкой и валидацией)? Могу ли я еще разоблачить его через публичное свойство, но с логикой, заключенной в get
и set
? Зачем мне/нужно делать это с помощью специальных методов setter и getter (с соответствующей логикой обработки и проверки).