7

読み取り専用プロパティの使用に違いはありますか:

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

自動的に実装されたプロパティを使用します。

type T(arg) =
  member val M = arg

arg副作用がないと仮定しますか?どちらかを優先する理由はありますか?

4

1 に答える 1

12

これらの本質的な違いは、インスタンスの初期化中に一度だけmember val計算される式を表すことです。したがって、

type Person(fname, lname) =
  member val Name = fname + lname // would be calculated once

したがって、最初の考慮事項はパフォーマンスです。

もう 1 つの考慮事項は、auto プロパティの 2 つの制限に基づいています。

  • これらは、プライマリ ctor を持つタイプでのみ使用できます。
  • 彼らはすることはできませんvirtual
于 2012-07-31T20:51:49.320 に答える