簡體   English   中英

數組檢查:對象引用未設置為對象的實例

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM