2012-07-31 44 views
6

、読み取り専用プロパティを使用して違いがある:読み取り専用自動対(読み取り専用)プロパティ

type T(arg) = 
    member x.M = arg 

と自動的に実装プロパティを使用して:

type T(arg) = 
    member val M = arg 

argを想定しています副作用はありませんか? 1つを他のものよりも優先する理由は何ですか?

+0

をすることはできません、それらの間の多くの顕著な違いはありません。 – 4444

答えて

10

これらの本質的な相違点は、member valが、の初期化中にの1回だけ計算された式を表していることです。したがって、最初の考慮事項はパフォーマンスです。

別の考慮事項は、自動プロパティの2つの制約に基づいています。

  • あなたが唯一の主要CTORと種類でそれらを使用することができます。全体として、コードを読むとき、より理解しやすいと感じるどちら -
  • 彼らは私の経験でvirtual
+0

制限は注目に値します。たぶん私はそれをうまく表現しなかったかもしれませんが、私は 'arg'が文字通りのような単純な価値だと考えることを意味しました。それは、私が知る限り、コストの違いを排除します。 – Daniel

+3

'this'リファレンスがないため、自動構文が好きです。それは、オブジェクトを変異させたり、他のメンバーに依存しないことを明らかにする。 – Daniel

関連する問題