【发布时间】:2011-04-29 15:32:13
【问题描述】:
为什么这个 F# 类不能编译(VS2010):
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
然后编译(虽然我现在相信抽象函数缺少实现),第二个函数的类型与第一个匹配。
在相关说明中,为什么编译器不要求 Base 的第二个定义具有 AbstractClass 属性?
【问题讨论】:
-
您在问:“为什么不编译器要求第二个定义具有 AbstractClass 属性?” - 当我对此进行测试时,编译器 确实 需要该属性。你用的是什么版本的编译器?
-
@wmeyer:你是对的。因为我测试上述代码的文件有一个错误,intellisense 没有将缺少 AbstractClass 属性作为错误突出显示。