2016-10-14 1 views
8

パブリックの読み取り専用フィールドを使用したい場合があります。取得専用の自動実装プロパティ?私は何かが足りない可能性がありますので..私は少し疲れているパブリックreadonlyフィールドv.s.取得専用プロパティ

public class Foo 
{ 
    public readonly string Hello; 

    public string Hello2 { get; } 
} 

の両方が唯一のコンストラクタ中に設定することができ、両方のは、クラスの外で読み取り専用のアクセスを提供しています。

答えて

4

1つの理由はデータバインディングのためです - .netはプロパティにバインディングを実装しますが、パブリックフィールドにはバインドを実装しません。ここ

いくつかの議論:Why can't we use public fields for data binding in C#?

+0

ありがとうポール、良い例です。 –

7

フィールドではなく、その財産を作るには、それがインターフェイスで使用できることを意味します。

正確な実装(自動プロパティは実際に実装があまりありませんが...)も抽象化されていますので、今後互換性を損なうことなくフィールドの組み合わせをベースにすることができます。

+0

すばらしい例のおかげで、私はここに欠けていた何かが明白だった。興味深いことにスタートアップはインターフェイスを実装していませんが、おそらくこのプロパティは別の場所でフックとして使用されています。 –

+1

私は本当にあなたとPaulFを答えとしてマークしたいと思っています。どちらも意味がありますが、彼の方が少し早いですが、もしできれば私もあなたもマークしています! –

関連する問題