日期:2014-05-19  浏览次数:20584 次

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

到现在还不知道是什么问题,按说,经过我一次次重新生成式的调试应该会自动覆盖啊!!!郁闷,散下分,也顺便请各位解释一下!!!

------解决方案--------------------

------解决方案--------------------
帮顶
------解决方案--------------------
呵呵,你还真逗。

class C
{
public C(){}
.....
}

别忘记写第一句就行了。
------解决方案--------------------
应该是因为你写了带参数的构造函数,但没有写默认的构造函数而造成的.

大多数编译器自动提供默认构造函数,但你只要自己写了任何一个构造函数,编译器提供的默认构造函数就没有了,所以Test t=new Test();就无法成功了
------解决方案--------------------
jf
------解决方案--------------------
Test t=new Test(); 出错,表示没有构造函数.
------解决方案--------------------
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();
}
}

------解决方案--------------------
应该是因为你写了带参数的构造函数,但没有写默认的构造函数而造成的.

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

------解决方案--------------------
那贴点代码看看?
------解决方案--------------------
接分~~~
------解决方案--------------------
你现在能证明你以前确实写了没带参数的构造函数吗?既然你连dll都删除了,已经毁尸灭迹了,死无对证了。

不过我们可以估计你原来的dll中大概确实没有这个函数。
------解决方案--------------------
你以开头写“有三个项目”是手误吗?如果不是,大概你在工程中引用别的项目或者设置编译策略上有一些坏毛病。
------解决方案--------------------
Test t=new Test();错误提示
缺构造函数/或构造函数private

找不到方法void C.Test.ctor(),

说明你的C.Test类中 根本 没有 这个方法 或者 方法不是static
需要C.Test t = new C.Test();
t.ctor();
------解决方案--------------------
贴代码来看看吧。