为什么这个F#类不编译(与VS2010):与用于F#类tupled参数的默认方法
type Base =
abstract func : (int * int) -> int
default this.func (x : int, y : int) : int =
x + y
FUNC的默认实现导致此编译错误:
Error 9 This override takes a different number of arguments to the corresponding abstract member
如果我改变它是一个成员:
type Base =
abstract func : (int * int) -> int
member this.func (x : int, y : int) : int =
x + y
然后编译(虽然我相信现在抽象的func没有实现),第二个func的类型与第一个匹配。
在相关说明中,为什么编译器不要求Base的第二个定义具有AbstractClass属性?
你问:“为什么**不**编译器需要第二定义有一个AbstractClass属性?“ - 当我测试这个时,编译器**确实需要这个属性。你使用的是什么版本的编译器? – wmeyer 2011-04-29 16:02:26
@wmeyer:你说得对。由于我测试上述代码的文件有进一步的错误,因此intellisense没有突出显示缺少AbstractClass属性作为错误。 – 2011-04-29 16:13:30