我应该使用继承还是接口?

Str*_*ger 2 inheritance f# interface

有什么区别:

type IFooable =
    interface IDisposable

    abstract Foo : (unit -> unit)
Run Code Online (Sandbox Code Playgroud)

type IFooable =
    inherit IDisposable

    abstract Foo : (unit -> unit)
Run Code Online (Sandbox Code Playgroud)

如果相同,在哪种情况下我应该使用一个而不是另一个?谢谢!

Bri*_*ian 6

(我原本以为)你必须使用'inherit'和(最多一个)基.您可以对要实现的任何接口使用"interface".

所以在IDisposable的情况下,它必须是'interface'.

编辑,确定编译器允许它,但这可能是一个错误,我会看

编辑:事实证明它可能是另一种可能的错误,并且可能的接口会强制您使用"继承"来继承其他接口,这个想法是"继承"成员总是在"隐式接口"意义上直接可见,而类上的'interface'声明是一个'显式'接口,需要强制转换为该接口类型才能使用这些成员.无论如何,我们可能会删除语言语法中的这种灵活性,因此只有一种方法可以创建它,而不是两种等效方式.