这几天一直被一个问题缠住:
有三个项目:A,B,C;其中A调用B中的类,B调用C中的类,结果在当B调用C的类Test时出错,而出错的语句却总在新建实例的那一句:Test t=new Test();错误提示,找不到方法void C.Test.ctor(),我一直纳闷,不懂是什么错,搞了快一个星期了一直都不知道错在哪,本来早想在CSDN问,想想还是坚持自己捉摸,捉摸几天真累啊,代码是看了一遍又一遍,没有任何异常,刚突发奇想,把几个生成的dll文件删除了,得了!!!!!!!!真晕啊,真晕!!!到现在还不知道是什么问题,按说,经过我一次次重新生成式的调试应该会自动覆盖啊!!!郁闷,散下分,也顺便请各位解释一下!!!

解决方案 »

  1.   

    呵呵,你还真逗。class C
    {
      public C(){}
      .....
    }别忘记写第一句就行了。
      

  2.   

    应该是因为你写了带参数的构造函数,但没有写默认的构造函数而造成的.大多数编译器自动提供默认构造函数,但你只要自己写了任何一个构造函数,编译器提供的默认构造函数就没有了,所以Test t=new Test();就无法成功了
      

  3.   

    Test t=new Test(); 出错,表示没有构造函数.
      

  4.   

    class Test
    {
    static void Main()
    {
    //正常,因为编译器提供了默认的构造函数
    Test t = new Test();
    }
    }class Test
    {
    private int i;
    public Test(int i)
    {
    this.i = i;
    }
    static void Main()
    {
    //正常,因为自己提供了合适的构造函数
    Test t = new Test(5);
    }
    }class Test
    {
    private int i;
    public Test(int i)
    {
    this.i = i;
    }
    static void Main()
    {
    //错误,自己写的构造函数覆盖了默认的构造函数
    Test t = new Test();
    }
    }
      

  5.   

    应该是因为你写了带参数的构造函数,但没有写默认的构造函数而造成的.大多数编译器自动提供默认构造函数,但你只要自己写了任何一个构造函数,编译器提供的默认构造函数就没有了,所以Test t=new Test();就无法成功了
      

  6.   

    如果是楼上各位说的情况,就不会只删除dll文件,重新生成就可以了
      

  7.   

    你现在能证明你以前确实写了没带参数的构造函数吗?既然你连dll都删除了,已经毁尸灭迹了,死无对证了。不过我们可以估计你原来的dll中大概确实没有这个函数。
      

  8.   

    你以开头写“有三个项目”是手误吗?如果不是,大概你在工程中引用别的项目或者设置编译策略上有一些坏毛病。---------------------
    我估计是这种问题,因为我在看个这个帖子后,对项目的依赖性有所修改http://community.csdn.net/Expert/topic/4804/4804145.xml?temp=.6717188
      

  9.   

    Test t=new Test();错误提示
    缺构造函数/或构造函数private找不到方法void C.Test.ctor(),说明你的C.Test类中 根本 没有 这个方法 或者 方法不是static
    需要C.Test t = new C.Test();
    t.ctor();