ReSharper - 空分配问题

时间:2009-02-11 13:38:52

标签: c# resharper

JetBrains ReSharper问题

我们有以下C#代码,我们从图像资源文件填充图像列表。 ReSharper指示“可能”null“赋值给具有”NotNull“属性的实体”。

这个问题会告诉我们,我们只需要检查以确保我们的ResMan_Graphics不是null,但是当我们检查null时......问题仍然存在。

以下是生成ReSharper问题的代码;

ResourceManager ResMan_Graphics = new ResourceManager("_Graphics", Assembly.ReflectionOnlyLoad("lib"));
ImageList Icons = new ImageList();

Icons.Images.Add((Image)ResMan_Graphics.GetObject("ICON_Main"));

之前是否有人遇到此ReSharper评论,您对如何从资源填充imageList而不产生此问题有任何建议。

注意:如果我们将一个imageList组件放在一个表单上,然后从代码中的资源填充imageList,ReSharper不会产生注释。

3 个答案:

答案 0 :(得分:14)

这是因为GetObject可能会返回null。你想这样做:

Image image = (Image)ResMan_Graphics.GetObject("ICON_Main");
if (image != null)
    Icons.Images.Add(image);

答案 1 :(得分:3)

ReSharper应该能够解决ResMan_Graphics不为null的问题 - 你刚刚调用了一个构造函数。但是,GetObject可能会返回null - 我希望它是抱怨的。

是最后一行有错吗?听起来你可以做到:

Image image = (Image) ResMan_Graphics.GetObject("ICON_Main");
if (image == null)
{
    // Throw some nasty exception
}
Icons.Images.Add(image);

答案 2 :(得分:-1)

所以你试过了:

if( ResMan_Graphics != null ) {
  Icons.Images.Add((Image)ResMan_Graphics.GetObject("ICON_Main"));
}