簡體   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