我现在正在上 C# 课程,我正在尝试找出最好的做事方式。我来自 Java 背景,所以我只熟悉 Java 最佳实践;我是 C# 新手!
在 Java 中,如果我有私有财产,我会这样做;
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
在 C# 中,我看到有很多方法可以做到这一点。
我可以像 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)。因此,例如,我赞成不变性(仅在必要时提供设置器)。我只是想知道这些实践如何与 C# 中提供 setter 和 getter 的各种方式相适应;本质上,我如何将 Java 世界的最佳实践转化为 C#?
编辑
我将其发布为对 Jon Skeet 答案的评论,但后来它变得很长:
那么一个重要的属性(即,可能有重要的处理和验证)呢?我是否仍然可以通过公共属性公开它,但将逻辑封装在get
and中set
?为什么/应该通过专用的 setter 和 getter 方法(具有相关的处理和验证逻辑)来执行此操作。