我现在正在上 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 的回答的一个评论,但是它变得很长:
那么一个非平凡的属性(例如,可能具有重要的处理和验证)又如何呢?我是否仍然可以通过一个公共属性公开它,但是使用封装在 get
和 set
中的逻辑?为什么要/应该在拥有专用的 setter 和 getter 方法(具有相关的处理和验证逻辑)之上进行这种操作。