我现在正在上C#课程,我正在努力寻找最好的做事方式.我来自Java背景,因此我只熟悉Java最佳实践; 我是C#新手!
在Java中,如果我有私有财产,我会这样做;
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
Run Code Online (Sandbox Code Playgroud)
在C#中,我看到有很多方法可以做到这一点.
我可以像Java一样做:
private string name;
public void setName(string name) {
this.name = name;
}
public string getName() {
return this.name;
}
Run Code Online (Sandbox Code Playgroud)
或者我可以这样做:
private string name;
public string Name {
get { return name; }
set { name = value; }
}
Run Code Online (Sandbox Code Playgroud)
要么:
public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
我应该使用哪一个,每种方法涉及哪些警告或细微之处?在创建类时,我遵循我从Java中了解的一般最佳实践(特别是阅读Effective Java).因此,例如,我赞成不变性(仅在必要时提供setter).我很想知道这些实践如何适应C#中提供setter和getter的各种方法; 基本上,我如何将Java世界的最佳实践转换为C#?
编辑
我发布这篇文章是对Jon Skeet答案的评论,但后来很久了:
那么一个非平凡的财产(也许,可能有重要的处理和验证)?我是否仍然可以通过公共属性公开它,但是逻辑封装在get和 …