我对difference between private members and let bindings有所了解。 它可以帮助我澄清我的理解,为什么这样的事情是不可能的
type B () =
inherit A ()
let doSomething () =
base.CallToA ()
是否在施工期间防止部分构造的物体或一些泄漏?
答案 0 :(得分:4)
只需要调用base
关键字来调用虚方法的基类实现。这是需要 base
的唯一情况,因为您无法使用this
实例调用该方法(因为这将引用当前类中的覆盖)。
部分正确的是,编译器希望阻止您访问部分构造的对象。但是,这是通过要求您明确表示您希望能够使用as this
引用构造函数内的当前实例来完成的:
type B () as this =
inherit A ()
let doSomething () =
this.CallToA ()
标识符this
只是一个名称 - 与成员声明类似 - 所以你可以在那里使用其他名称。