[英]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.