ReSharper — проблема с нулевым назначением

Проблема с 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 не создаст комментарий.


person Community    schedule 11.02.2009    source источник


Ответы (3)


Это потому, что GetObject может возвращать значение null. Вы хотите сделать это:

Image image = (Image)ResMan_Graphics.GetObject("ICON_Main");
if (image != null)
    Icons.Images.Add(image);
person Roger Lipscombe    schedule 11.02.2009
comment
отлично... работает. промежуточный шаг приведения его к изображению, а затем проверка этого изображения на нуль. Спасибо за быстрый ответ! - person ; 11.02.2009

ReSharper должен быть в состоянии понять, что ResMan_Graphics не равен нулю — вы только что вызвали конструктор. Однако вполне возможно, что GetObject вернет null - я ожидаю, на что он жалуется.

Виновата ли последняя строка? Похоже, вы могли бы сделать:

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

Итак, вы пробовали:

if( ResMan_Graphics != null ) {
  Icons.Images.Add((Image)ResMan_Graphics.GetObject("ICON_Main"));
}
person Ryan Emerle    schedule 11.02.2009