使用只读属性之间是否存在差异:
type T(arg) =
member x.M = arg
并使用自动实现的属性:
type T(arg) =
member val M = arg
假设arg
没有副作用?有理由偏爱一个吗?
答案 0 :(得分:10)
这些之间的本质区别是member val
表示在实例初始化期间仅计算一次的表达式。因此,
type Person(fname, lname) =
member val Name = fname + lname // would be calculated once
因此,首先要考虑的是性能。
另一个考虑因素是基于自动属性的两个限制:
virtual