数组检查:对象引用未设置为对象的实例

Ant*_*den 0 c# arrays

我正在努力找到解决这个问题的方法.我在这个网站上看到很多关于这个主题的类似条目,但我似乎无法找到解决方案.我正在尝试检查缓存中的表以查看它是否已存在,如果没有,则填充它.下面是我检查的代码,它在'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()));
                }
            }
Run Code Online (Sandbox Code Playgroud)

Zbi*_*iew 5

随着string.IsNullOrEmpty(saveCatList[0])您检查数组的第一个元素是空或空.您的数组似乎为null,因此您应首先检查您的数组:

if(saveCatList == null || string.IsNullOrEmpty(saveCatList[0]))
Run Code Online (Sandbox Code Playgroud)