Getters、setters 和 properties 最佳实践。Java vs. C#
我现在正在上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)。例如,我赞成不可变性(仅在必要时提供 setter)。我只是好奇这些实践如何适应在C#中提供setter和getter的各种方式;从本质上讲,如何将Java世界的最佳实践转化为C#?
编辑
我发布这篇文章作为对Jon Skeet答案的评论,但后来它变得很长:
那么非平凡的属性(即,可能具有重要的处理和验证)呢?我是否仍可以通过公共属性公开它,但将逻辑封装在 和 中?为什么我会/应该这样做,而不是有专用的 setter 和 getter 方法(具有相关的处理和验证逻辑)。get
set