[英]Array check: Object reference not set to an instance of an object
我正在努力尋找解決這個問題的方法。 我在這個站點上看到很多類似的條目,都涉及到這個主題,但是我似乎無法找到解決方案。 我正在嘗試檢查緩存中的表以查看它是否已經存在,如果不存在,請填充它。 下面是我進行檢查的代碼,它在“ if”語句中告訴我“ System.NullReferenceException:對象引用未設置為對象實例”時出錯。 這令人費解,因為'.IsNullOrEmpty'不應該抓住這個嗎? 我想知道數組中的第一個元素為null還是空,那么它尚未被緩存,因此采取措施。
string[] saveCatList = Cache["Categories" + Session["sessopnID"]] as string[];
if (string.IsNullOrEmpty(saveCatList[0]))
{
WBDEMOReference.getcatlist_itemcategories[] categories;
strResult = callWebServ.getcatlist(Session["sessionID"].ToString(),
out strResultText, out dNumOfCat, out categories);
for (int i = 0; i < categories.Length; i++)
{
//ddCat is the ID number of the category drop down list
ddCat.Items.Add(new ListItem(categories[i].categorydesc.ToString(),
categories[i].categorynumber.ToString()));
}
}
使用string.IsNullOrEmpty(saveCatList[0])
您檢查數組的第一個元素為空還是null。 您的數組似乎為空,因此您首先應檢查您的數組:
if(saveCatList == null || string.IsNullOrEmpty(saveCatList[0]))
Cache["Categories" + Session["sessopnID"]] as string[];
此強制轉換失敗,“ as string”返回null。 因此,當您嘗試將關聯變量作為數組訪問時,實際上是在執行null [0],這是NullReferenceException。
如果您首先添加檢查以確保該數組不為null,則可以正常工作。
更改
if (string.IsNullOrEmpty(saveCatList[0]))
至
if (saveCatList != null && saveCatList.Length>0 && string.IsNullOrEmpty(saveCatList[0]))
此外,更改
ddCat.Items.Add(new ListItem(categories[i].categorydesc.ToString(),
categories[i].categorynumber.ToString()));
至
if (categories[i].categorydesc != null && categories[i].categorynumber!= null)
{
ddCat.Items.Add(new ListItem(categories[i].categorydesc.ToString(),
categories[i].categorynumber.ToString()));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.