私は今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から知っている一般的なベストプラクティスに従っています(特に、Effective Javaを読んでいます)。たとえば、私は不変性を支持しています(必要な場合にのみセッターを提供します)。これらのプラクティスがC#でセッターとゲッターを提供するさまざまな方法にどのように適合するかを知りたいだけです。基本的に、Javaの世界のベストプラクティスをC#にどのように変換しますか?
編集する
私はこれをジョン・スキートの回答へのコメントとして投稿していましたが、長くなりました:
重要なプロパティ(つまり、重要な処理と検証を伴う)はどうですか?パブリックプロパティを介してそれを公開することはできますが、ロジックがget
andにカプセル化されていset
ますか?専用のセッターメソッドとゲッターメソッド(関連する処理ロジックと検証ロジックを含む)を使用するよりも、なぜこれを行うべきですか?