我有以下代码
class clazz
{
constructor {:axiom} () requires true
method su(x: int, y:int) returns (r: int)
{
r := x + y;
}
}
method {:main} Main() {
var c := new clazz();
var s := c.su(2,3);
print(s);
}
一个人如何利用clazz
类?这是特定的错误:
error CS1061: Type `__default.ClassRoomExample' does not contain a definition for `__ctor'and no extension method `__ctor' of type `__default.ClassRoomExample' could be found. Are you missing an assembly reference?
答案 0 :(得分:0)
我刚发现问题所在。在构造函数中缺少{ }
。哑巴。
答案 1 :(得分:0)
通常,Dafny编译器会抱怨您声明了没有主体的内容,在这种情况下,是没有主体的构造函数。但是,您已经用{:axiom}
标记了构造函数,这告诉编译器您故意将其遗漏了。这就是为什么您看到的错误来自C#编译器,而不是Dafny编译器。
不常见的{:axiom}
属性是为无身体的引理设计的。如果确实要省略构造函数或方法的代码,则可能要使用:extern
属性,该属性使您可以用另一种.NET语言实现该方法。