使用全局字符串变量时出现 C# 空引用错误
本文关键字:引用 错误 全局 字符串 变量 | 更新日期: 2023-09-27 17:56:31
我正在制作一个管理用户数据的程序,例如,当第一个用户喜欢兰博基尼Aventador,第二个用户喜欢法拉利F12b时,程序会询问用户他们喜欢什么。根据该程序,第一个用户进入兰博基尼Aventador,第二个用户进入F12b。为了制作该程序,我在Visual Studio 2013中使用了Microsoft C# Windows表单项目。
然后我做了一个按钮1和一个文本框1,当第一个用户在文本框1中输入他喜欢的东西(这是兰博基尼Aventador)时,他必须点击按钮1。单击后,该软件已准备好供下一个用户输入他最喜欢的汽车,即法拉利F12b。
然后我做了一个按钮2和文本框2,当你在文本框2上键入"1"并单击按钮2时,它会显示第一个用户喜欢的汽车(Aventador)int the textbox2。
实际上,我创建了一个名为"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;
}
}
}