2012-04-23 81 views
0

我做了下面的代码在C#项目:没有构造函数,它需要0个参数 - 但那不是真的?

private void RandAddButton_Click(object sender, EventArgs e) { 
    int numberOfItems = int.Parse(amountItems.Text); 
    CreateDataSet.CreateDataSet create = new CreateDataSet.CreateDataSet(); 
    create.CreateItems(numberOfItems); 
} 

,你可以看到我尝试使用CreateItems在CreateDataSet类。 的问题是,我得到如下因素误差

'CreateDataSet.CreateDataSet' does not contain a constructor that takes 0 arguments

但在CreateDataSet类我有下面的构造:

public CreateDataSet() { 

} 

这是为什么不工作?

谢谢

+0

如果CreateDataSet然后是外部DLL重建它,并刷新参考... – Zaki 2012-04-23 09:30:27

+0

你能表现出更多的代码?例如类CreateDataSet。 – Skalli 2012-04-23 09:30:41

+1

CreateDataSet.CreateDataSet create = new CreateDataSet.CreateDataSet();你的命名空间和类名应该不同。这会导致歧义。 – 2012-04-23 09:32:19

回答

1

这样做:

CreateDataSet create = new CreateDataSet(); 

相反的:

CreateDataSet.CreateDataSet create = new CreateDataSet.CreateDataSet(); 
+0

然后我得到的错误'CreateDataSet'是一个'命名空间'位像使用'类型':( – 2012-04-23 09:59:42

+0

@JonasHansen如其中一个答案中的建议,请改变你的命名空间或类名称。 – GETah 2012-04-23 20:57:19

3

您的通话new CreateDataSet.CreateDataSet()想创建的嵌套类CreateDataSet.CreateDataSet的一个实例。如果你想打电话给CreateDataSet的构造函数,你应该只使用new CreateDataSet()

+0

嗨谢谢你的回答,如果我照你说的做我得到的错误:'CreateDataSet'是一个'命名空间',但用于'类型' – 2012-04-23 09:34:53

+2

在这种情况下,不要使用同一个名字和一个名字空间。您可以通过使用'global ::'完全限定名称来避开这个问题,但最好重命名类或名称空间。 – CodesInChaos 2012-04-23 09:35:27

+0

好吧我会尝试重命名我的班级,谢谢 – 2012-04-23 09:40:31

相关问题