我找不到合适的语法来编码继承基类B(用C#编写)的D类型及其基类隐式构造函数以外的构造函数:

C#代码:

public class B
{
    private int _i;
    private float _f;
    public B()
    {
        _i = 0;
        _f = 0.0f;
    }
    public B(int i)
    {
        _i = 0;
        _f = 0.0f;
    }
    public B(int i, float f)
    {
        _i = i;
        _f = f;
    }
}


F#代码:

type D() =
    inherit B()
    //how to inherit from other constructors ?


谢谢

最佳答案

我感谢blog找到了一种方法!

type D =
    class
        inherit B

        new () = {
            inherit B()
        }
        new (i : int) = {
            inherit B(i)
        }
        new ((i,f) : int*single) = {
            inherit B(i, f)
        }
    end


是的,这有点麻烦,但就像Brian所说的那样,并不是大多数情况。

编辑:
实际上,class / end关键字不是强制性的(因此,我收回了我所说的麻烦)。
正如Brian在其博客here中所说的那样,F#通常会推断所定义的类型,从而使这些标记不必要/多余。

type D =
    inherit B

    new () = {
        inherit B()
    }
    new (i : int) = {
        inherit B(i)
    }
    new ((i,f) : int*single) = {
        inherit B(i, f)
    }

09-11 18:02