2009-07-06 19 views
47

は、匿名型のプロパティは読み取り専用です:もちろんなぜC#で匿名型のプロパティが読み取り専用ですか? C#ので

var person = new { Surname = "Smith", OtherNames = "John" }; 
person.Surname = "Johnson"; // ERROR: .Surname is read-only 

私が書き込み可能なフィールドまたはプロパティをしたい場合、私は実際のクラスを宣言することができますが、かかわらず、この設計上の決定の背後にある理由は何ですかプロパティを読み取り専用にしますか?

+0

安全を簡素化多分?あなたが書き込み可能であると指定しなかった場合は、書き込めるようにしてください。また、それらはプロパティであり、フィールドではありません。 –

+0

良い点、私はテキストを変更します。私はまた、なぜ彼らは "readonly"と宣言されたフィールドにすることができなかったのだろうか... ... –

+1

http://stackoverflow.com/questions/622664/what-is-immutability-and-why-should-i-worry-about-それは –

答えて

50

興味深い記事そのhere。メンバーが変更さ していないことを確実にすることがあるから...

... [B]、Y、我々はハッシュが object.Thisの寿命のため 定数は への匿名のタイプがあることができていることを確認してくださいメンバーが変更されたときに実際に を失うことなく、 ハッシュテーブルのようなコレクションで使用されます。 immutabiltyの利益の多くが、その中にありますが、それは劇的 、彼らが作成したときにのみ 値が割り当てられ、その後、ちょうど を使用することができますので、 オブジェクトを使用するコード(スレッドだと思う)

+0

それは素晴らしいリンクです、ありがとう! –

+10

はい、不変性には多くの利点がありますが、変更可能性にも多くの利点があります。上記の引数を使用して、リストも不変でなければならないと主張することができます。この決定は絶対に意味をなさない。 –

+0

私はDannyに同意します。この決定は絶対に意味をなさない。 – tomexou

関連する問題