在编写不需要访问同一类的其他成员的私有方法时,如何在私有成员和let绑定之间进行选择?
答案 0 :(得分:13)
规范的相关部分是8.6.2部分。它声明:
用于在“let”中声明的值的编译表示 类中的绑定是:
对象构造函数的本地值(如果值为 不是语法功能,不是可变的,不会在任何语法中使用 功能或成员)。
相应CLI类型中的实例字段(如果值为 不是语法功能,而是在某些功能或成员中使用。)
相应CLI类型的成员(如果值为a 句法功能)。
此外:
在两个成员中都没有使用的非函数let-bindings 类型或函数绑定被优化掉并成为值 是生成的CLI构造函数的本地。同样,功能 绑定表示为实例成员。
我更喜欢let
绑定到私人会员,因为他们更“实用”,即他们强调“什么”而不是“如何”。编译器负责最佳编译形式。
答案 1 :(得分:6)
let
绑定是私有的。我认为let
与私有member
之间的主要区别在于let
绑定无法重载,并且使用name()
而不是this.Name()
进行调用。因此,我认为这是一种主要的风格选择。
答案 2 :(得分:2)
let
绑定,但private method
可以。例如:
type A() =
let someUtil() = "util code"
member private this.AnotherUtil() = "anotherUtil"
member private this.DoSomething() =
let anotherA = A()
A.someUtil() // compilation failed
A.AnotherUtil() // ok