2009-02-11 3 views
2

JetBrains ReSharper ВыпускReSharper - Null Назначение Выпуск

Мы имеем следующий код С #, где мы населяющих в ImageList из файла образа ресурса. 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 не выдаст комментарий.

ответ

-1

Так вы уже пробовали:

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

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

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

0 превосходный ... это работает. промежуточный этап его литья в изображение, а затем проверку этого изображения на нуль. Спасибо за ваш быстрый ответ! – 2009-02-11 13:59:09

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);