如何选择私人会员和让绑定?

Fra*_*ori 9 f#

在编写不需要访问同一类的其他成员的私有方法时,如何在私有成员和let绑定之间进行选择?

  • 我倾向于使用私人会员,因为如果需要,更容易更改可访问性,但在做出选择时是否还有其他方面要记住?
  • 是否将绑定编译为私有成员(这只是一种样式选择)?

Dan*_*iel 13

规范的相关部分是第8.6.2节.它指出:

用于在类中"let"绑定中声明的值的编译表示是:

  • 对象构造函数的本地值(如果该值不是语法函数,则不可变,并且不在任何函数或成员中使用).

  • 相应CLI类型中的实例字段(如果该值不是语法函数,但在某个函数或成员中使用).

  • 相应CLI类型的成员(如果值是语法函数).

也:

未在类型成员或函数绑定中使用的非函数let绑定将被优化掉,并成为生成的CLI构造函数的本地值.同样,函数绑定表示为实例成员.

我更喜欢let绑定私人成员,因为他们更"功能",即他们强调"什么"而不是"如何".编译器负责最佳编译形式.


Bri*_*ian 6

let类中的绑定是私有的.我认为let与私有之间的主要区别memberlet绑定不能被重载,name()而是被调用而不是this.Name().因此,我认为这是一种主要的风格选择.