我试图在我的var中检查null,但它会抛出“对象引用未设置为对象的实例”。
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有空值,这就是我使用 if 条件进行检查的原因,但它在if条件下正在抛出。
有人可以告知检查的正确方法。
答案 0 :(得分:9)
您无法在空引用上调用方法。取出.Trim()
。
答案 1 :(得分:6)
if((selectedstory.Slug).Trim()!=null)
将首先在字符串上调用Trim()
方法,然后检查null。这是失败的部分:您正在尝试在空对象上调用实例方法。
你想要的是这样的:
if ( selectedstory != null && string.IsNullOrEmpty(selectedstory.Slug) )
答案 2 :(得分:6)
试试这个:
if (!string.IsNullOrWhiteSpace(selectedstory.Slug))
这样就无需在您正在检查的属性上调用Trim。
答案 3 :(得分: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);
}
}