为什么基地只能在私人会员中使用?

时间:2014-03-01 22:39:01

标签: constructor f# private-members let

我对difference between private members and let bindings有所了解。 它可以帮助我澄清我的理解,为什么这样的事情是不可能的

type B () =
    inherit A ()

    let doSomething () =
        base.CallToA ()   

是否在施工期间防止部分构造的物体或一些泄漏?

1 个答案:

答案 0 :(得分:4)

只需要调用base关键字来调用虚方法的基类实现。这是需要 base的唯一情况,因为您无法使用this实例调用该方法(因为这将引用当前类中的覆盖)。

部分正确的是,编译器希望阻止您访问部分构造的对象。但是,这是通过要求您明确表示您希望能够使用as this引用构造函数内的当前实例来完成的:

type B () as this =
  inherit A ()

  let doSomething () =
    this.CallToA ()   

标识符this只是一个名称 - 与成员声明类似 - 所以你可以在那里使用其他名称。