2

我试图检查我的 var 中的空值,但它抛出“对象引用未设置为对象的实例”。

 private void GenerateImage()
    {
        //Webster.Client.Modules.Metadata.Helper test = new Webster.Client.Modules.Metadata.Helper();
         var selectedstory = Webster.Client.Modules.Metadata.Helper.SelectedStoryItem;

        if((selectedstory.Slug).Trim()!=null)
        {
         //if (!string.IsNullOrEmpty(selectedstory.Slug))
       //{

           if (File.Exists(pathToImage))
           {
              }
           else
           {
               this.dialog.ShowError("Image file does not exist at the specified location", null);
           }
       }
       else
       {
           this.dialog.ShowError("Slug is Empty,please enter the Slug name", null);
       }
    }

我知道 selectedstory.Slug 的值为 null,这就是为什么我使用if条件进行检查,但它在 if 条件下直接抛出。

有人可以建议什么是正确的检查方法。

4

4 回答 4

9

您不能在空引用上调用方法。取出.Trim().

于 2012-05-10T03:21:55.737 回答
6
if((selectedstory.Slug).Trim()!=null)

将首先调用Trim()字符串上的方法,然后检查是否为空。这是失败的部分:您试图在空对象上调用实例方法。

你想要的是这样的:

if ( selectedstory != null && string.IsNullOrEmpty(selectedstory.Slug) )
于 2012-05-10T03:23:10.793 回答
6

试试这个:

if (!string.IsNullOrWhiteSpace(selectedstory.Slug))

这消除了在您正在检查的属性上调用 Trim 的需要。

于 2012-05-10T03:23:42.540 回答
0

这就是我最终想出的

    try
        {

            if (!string.IsNullOrWhiteSpace(selectedstory.Slug))
            {

                if (File.Exists(pathToImage))
                {
                    string SlugName = selectedstory.Slug;
                    if (pathToImage.Contains(SlugName))
                    {

                    }
                    else
                    {
                        this.dialog.ShowError("Image file name is not same as Slug name", null);
                    }
                }
                else
                {
                    this.dialog.ShowError("Image file does not exist at the specified location", null);
                }

            }
          }
        catch (Exception ex)
        {
            this.dialog.ShowError("Slug is Empty,please enter the Slug name", null);

        }
    }
于 2012-05-10T04:33:35.290 回答