方法不会返回某些值,但会返回其他值

时间:2013-12-05 12:06:43

标签: c# winforms methods count

我有以下方法返回一个数字:

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方法时,它不起作用。

2 个答案:

答案 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);