C# ReSharper-空赋值问题

C# ReSharper-空赋值问题,c#,resharper,C#,Resharper,JetBrains重拾器问题 我们有下面的C代码,其中我们从图像资源文件填充imagelist。ReSharper正在向具有“NotNull”属性的实体指示“可能的”null“赋值 该问题将向我们表明,我们只需进行检查,以确保我们的ResMan_图形不为空,但当我们对空进行检查时。。。问题仍然存在 下面是生成重竖琴问题的代码 ResourceManager ResMan_Graphics = new ResourceManager("_Graphics", Assembly.Reflection

JetBrains重拾器问题

我们有下面的C代码,其中我们从图像资源文件填充imagelist。ReSharper正在向具有“NotNull”属性的实体指示“可能的”null“赋值

该问题将向我们表明,我们只需进行检查,以确保我们的ResMan_图形不为空,但当我们对空进行检查时。。。问题仍然存在

下面是生成重竖琴问题的代码

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

因此您尝试了:

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

这是因为
GetObject
可能返回null。您要执行以下操作:

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

ReSharper应该能够计算出ResMan_图形不是空的——您刚刚调用了一个构造函数。然而,GetObject有可能返回null——我想这正是它所抱怨的

是最后一条线路出故障了吗?听起来你可以做到:

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

杰出的这很有效。将其强制转换为图像,然后检查该图像是否为空的中间步骤。谢谢你的快速回复!