2

JetBrains ReSharper 问题

我们有以下 C# 代码,其中我们从图像资源文件填充图像列表。ReSharper 指示“可能为具有“NotNull”属性的实体分配“空”。

该问题向我们表明,我们只需要检查以确保我们的 ResMan_Graphics 不为空,但是当我们对空进行检查时......问题仍然存在。

这是生成 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 不会生成注释。

4

3 回答 3

14

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

Image image = (Image)ResMan_Graphics.GetObject("ICON_Main");
if (image != null)
    Icons.Images.Add(image);
于 2009-02-11T13:49:04.317 回答
3

ReSharper 应该能够确定 ResMan_Graphics 不为空 - 您刚刚调用了构造函数。但是,GetObject 可能会返回 null - 我希望这就是它所抱怨的。

是不是最后一行出错了?听起来你可以这样做:

Image image = (Image) ResMan_Graphics.GetObject("ICON_Main");
if (image == null)
{
    // Throw some nasty exception
}
Icons.Images.Add(image);
于 2009-02-11T13:49:50.663 回答
-1

所以你已经尝试过:

if( ResMan_Graphics != null ) {
  Icons.Images.Add((Image)ResMan_Graphics.GetObject("ICON_Main"));
}
于 2009-02-11T13:46:00.970 回答