繁体   English   中英

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

[英]C# null reference error when using a global string variable

我正在制作一个管理用户数据的程序,例如当第一个用户喜欢兰博基尼 Aventador 和第二个用户喜欢法拉利 F12b 时,程序会询问用户他们喜欢什么。 根据程序,第一个用户输入兰博基尼 Aventador,第二个用户输入 F12b。 为了制作程序,我在 Microsoft Visual Studio 2013 中使用了一个 C# Windows 窗体项目。

然后我做了一个button1和一个textbox1,当第一个用户在textbox1中输入他喜欢的东西(这是兰博基尼Aventador)时,他必须点击button1。 单击后,该软件已准备好让下一个用户输入他最喜欢的汽车,即法拉利 F12b。

然后我做了一个button2和textbox2,当你在textbox2上输入“1”并点击button2时,它会在textbox2中显示第一个用户喜欢什么车(Aventador)。

实际上,我创建了一个名为“car”的类,它有一个名为“fav_car”的字符串和一个名为“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] 是数组(不是字符串),我写错了,它是“For (int j=0; j<2 ;j++) 并且对于 button2 它是 a[j] 而不是 a[ i] 这些是我帖子中的错误,我真正的问题是“textbox2.text==a[i].user_id”行的空引用。**

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

car[] a = new car[3];

之前a[i].fav_car=textbox1.Text; 您需要像这样初始化a[i]a[i] = new car();

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

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

使用 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
}

尝试这个。 这做你想做的。

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;
            }
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM