使用全局字符串变量时C#null引用错误

时间:2014-04-04 11:08:12

标签: c# null runtime-error global

我制作了一个管理用户数据的程序,例如当第一个用户喜欢Lamborghini Aventador而第二个用户喜欢Ferrari F12b时,该程序会询问用户他们喜欢什么。根据该计划,第一个用户进入兰博基尼Aventador,第二个进入F12b。为了制作程序,我在Microsoft Visual Studio 2013中使用了一个C#Windows表单项目。

然后我创建了一个button1和一个textbox1,当第一个用户在textbox1中键入他喜欢的内容(这是Lamborghini Aventador)时,他必须单击button1。点击后,软件就可以让下一个用户输入他最喜欢的车型,即法拉利F12b。

然后我输入了button2和textbox2,当你输入" 1"在textbox2上单击按钮2,它会显示第一个用户喜欢的汽车(Aventador)在文本框2中。

实际上我创建了一个名为" car"它有一个叫做#34; fav_car"的字符串。 AND一个名为" user_id"的整数。当用户输入他最喜欢的汽车时,他实际输入了该类的字符串。

然后我写了这样的代码:

全局变量:

car []a=new car [2]; 
int i=0;

表示按钮1:

a[i].fav_car=textbox1.Text;
a[i].user_id=i;
i++;

表示按钮2:

for (int j=0; j<=2; j++) {
    if (textbox2.text==a[i].user_id) {
        textbox2.text==a[i].fav_car;
    }
}

但是在编译代码时,它会说

  

空参考错误

if (textbox2.text==a[i].user_id)行中

如何解决它以及为什么会这样?我的a[i]字符串是全局的,它不应该发生!

**编辑: a [i]是数组(不是字符串),我在编写时犯了错误,它是&#34; For(int j = 0; j&lt; 2; j ++)和button2这是[j]而不是[i]我的帖子中的错误,我真正的问题是&#34; textbox2.text == a [i] .user_id&#34;的空引用。线。 **

3 个答案:

答案 0 :(得分:0)

您应首先初始化项目,并且数组索引也从零开始,将j<=2更改为j<2或创建包含3个元素的数组:

car[] a = new car[3];

a[i].fav_car=textbox1.Text;之前,您需要初始化a[i],例如:a[i] = new car();

  

我的[i]字符串是全局的,

a[i]不是string,您有一个数组或cars,因此它是car,默认为null

答案 1 :(得分:0)

使用List而不是数组。它更有用,更容易工作。

http://msdn.microsoft.com/pt-br/library/6sh2ey19(v=vs.110).aspx

 List<car> _lstCar = new List<car>();

 car c = new car();

 c.fav_car=textbox1.Text;
 c.user_id= _lstCar.Count+1;

 _lstCar.Add(c);

foreach(Car c in _lstCar)
{
    //do some wor here
}

答案 2 :(得分:0)

试试这个。这样做你想要的。

List<car> globalList = new List<car>();
    int globalCounter = 0;
    void Button1_Click(object sender, RoutedEventArgs e)
    {
        car c = new car();

        c.fav_car = textbox1.Text;
        c.user_id = globalCounter++;

        globalList.Add(c);
    }

    void Button2_Click(object sender, RoutedEventArgs e)
    {
        foreach (car c in globalList)
        {
            if (textbox2.text == c.user_id)
            {
                textbox2.text == c.fav_car;
            }
        }
    }