C# 一個數組未賦值引發的錯誤


    在電腦前又是一天,后來腦子也糊里糊塗,可能是基礎還不牢固,設置斷點,找了找問題才發現數組定義出了問題,

我是這樣定義數組的,string[] auths ; string auths=new string[]{} 等等

程序第一次報錯,未實例化對象,什么情況這是,我以為是寫遍歷隊列的問題,那個隊列聲明為全局了,后來值也能傳給重新定義的測試string 變量,也沒問題啊。

再后來才知道未實例化數組,數組也要實例化,以前覺得可以信手哪來就用,在c#上的托管堆上,沒有實例化對象是沒法用的。實例化數組

   string[] auths = new string[5];  //這樣寫就沒問題了

  string[] codes= new string[5] { "", "", "", "", "" };   這個是賦值的寫法

第二個問題:

因為我要賦值給數組5個數之后,清空數組。

於是我用了這個寫法

auths = null;
codes = null;

結果就是第一個問題解決了之后,又出現了未實例化對象的報錯,靠,此時腦袋有點不愛動了,后來才慢慢體會到實例化對象的用處

賦值給null之后,等於釋放了內存堆的對象,等於new的對象失效了。兩個問題疊加在一起,幻覺出現。編程就是這么有趣,同時

也是枯燥,若值不為空的話,還得考慮一次讀取隊列中5個值,若隊列最后不足5個的時候,數組后幾位的值肯定是錯的,那程序在結尾肯定會出現問題。

於是開始想若數值不足5個的情況怎么處理。

下邊程序作為一個記錄吧,提醒自己。改天想想如何添加不足5個的情況,總數取余嗎,那我的add里邊的有好幾個參數沒有值咋整,可以在add方法里邊判斷,我的輸出pdf一行畫 5個圖,還得寫一行畫四個圖,一行3個,一行2個,一行1個的程序啊。

string[] auths = new string[5];
string[] codes= new string[5] ;

 

foreach (FileContent fc in filecontents)
{

kkk=fc.Cardid;
auths[i] = fc.Cardid.ToString();
codes[i] = fc.Autcode;
++i;
if(i==5)
{
cd.Add(new code(codes[0], codes[1], codes[2], codes[3], codes[4], codes[0], codes[1], codes[2], codes[3], codes[4], auths[0], auths[1], auths[2], auths[3], auths[4]));
i = 0;

}

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM