我有以下方法返回一个数字:
public int basketContents()
{
int basketContains = basket.Count();
return basketContains;
}
如果我在Main中运行此方法它可以正常工作,但是当我在项目中以不同的形式使用它时,它返回0,无论实际数字应该是什么。
我用其他形式称它为:
Main Main = new Main();
MessageBox.Show("Basket Contents: " + Main.basketContents(), "Information",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
如果我自己将'basketContains'设置为数字,它将以任何一种形式显示数字。但是,当我使用count方法时,它不起作用。
答案 0 :(得分:1)
我猜basket
不是静态的。所以在这种情况下,如果你从另一个表单中调用它,它将为null,导致它的新变量具有默认值( - >为空,因此Count
将为零)
Main Main = new Main(); // Im a total new Form. I dont know anything, all my propertys are defaultvalues
注意:答案不是“让它静止”。根据您的需求,有更好的方法(例如更多参数,事件等)
示例:
public int basketContents(List<string> myBasket)
{
if (myBasket != null)
{
int basketContains = myBasket.Count();
return basketContains;
}
return 0;
}
称之为:
Main mytest = new Main();
var temp = new List<string>();
temp.Add("test");
MessageBox.Show("Basket Contents: " + myTest.basketContents(temp), "Information");
答案 1 :(得分:0)
如果basket是Main类的成员变量,那么在创建Main实例后需要设置它。
调用与类同名的变量也是个坏主意。
这样的事情应该有效:
Main myMain = new Main();
myMain.basket.Items.Add("Whatever");
MessageBox.Show("Basket Contents: " + Main.basketContents(), "Information",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);