私は現在 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# に変換するにはどうすればよいでしょうか?
編集
これをJon Skeetの回答へのコメントとして投稿していましたが、長くなりました:
自明ではないプロパティ (つまり、重要な処理と検証を伴うもの) はどうですか? パブリック プロパティを介して公開できますが、ロジックはget
andにカプセル化されていset
ますか? 専用のセッターとゲッターメソッド(関連する処理と検証ロジックを使用)を使用して、これを行う必要があるのはなぜですか。