使用类时缺少程序集引用

时间:2018-12-03 19:07:11

标签: dafny

我有以下代码

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?

2 个答案:

答案 0 :(得分:0)

我刚发现问题所在。在构造函数中缺少{ }。哑巴。

答案 1 :(得分:0)

通常,Dafny编译器会抱怨您声明了没有主体的内容,在这种情况下,是没有主体的构造函数。但是,您已经用{:axiom}标记了构造函数,这告诉编译器您故意将其遗漏了。这就是为什么您看到的错误来自C#编译器,而不是Dafny编译器。

不常见的{:axiom}属性是为无身体的引理设计的。如果确实要省略构造函数或方法的代码,则可能要使用:extern属性,该属性使您可以用另一种.NET语言实现该方法。