2015-12-01 5 views
5

C#6では、getter-only auto-propertiesproperty-like function membersを含むいくつかの新機能が追加されました。ReadonlyゲッターVSプロパティのような機能

これら2つのプロパティの違いは何ですか?なぜ私は別のものを好む理由がありますか?

public class Foo 
{ 
    public string Bar {get;} = "Bar"; 
    public string Bar2 => "Bar2"; 
} 

は私が{get;} =だけstaticコールまたは定数値によって設定することができることを知っていて、その=>は、インスタンスメンバーを使用することができます。しかし、私の特定のケースでは、どちらを好むべきですか?その理由は何ですか?

+1

「{get;} =静的呼び出しでしか設定できないことがわかります」というあなたの主張は間違っています。このように宣言されたプロパティは、コンストラクタまたはイニシャライザを使用してのみ設定できます。 –

+0

ああそうです。私はリンクを作っていないが、読み取り専用の自動プロパティを設定するこれらの方法は同じ結果につながる。ありがとうございました。 – TopinFrassi

答えて

6

これは、C#1の面でそれらを表示するのが最も簡単です:

public class Foo 
{ 
    private readonly string bar = "Bar"; 
    public string Bar { get { return bar; } } 

    public string Bar2 { get { return "Bar2"; } } 
} 

あなたが見ることができるように、最初のフィールドが含まれ、第二にはありません。だから、通常は最初のものを、それぞれのオブジェクトが異なる状態を持つ可能性のあるもので使用します。コンストラクタで設定されますが、オブジェクトの状態ごと(または他のメンバに委譲しているところ)は必要ありません。すべてのオブジェクトがあります。

基本的に、C#6を使用できない場合は、上記のコードのうちのどの部分を書くか自分自身に問い合せて、対応するC#6パスを選択します。

関連する問題