2013-08-28 3 views
0

У меня есть строка кода, которая предназначена для извлечения данных изображения из этого элемента, но код пропускается как imageItem = null. Какова вероятная причина этого?imageItem, возвращающий значение null в C#

foreach (Layer layer in level.Layers) 
{ 
    foreach (Item item in layer.Items) 
    { 
     ImageItem imageItem = item as ImageItem; 
     if (imageItem != null) 
     { 
      Texture2D texture = imageItem.Texture; 
      imageItemList[iImageItemNum].itemTextureDataList[0] = 
        new Color[imageItem.Texture.Width * imageItem.Texture.Height]; 
      imageItem 
       .Texture 
       .GetData(imageItemList[iImageItemNum] 
       .itemTextureDataList[0]); 
      iImageItemNum++; 
     } 
    } 
} 
+0

делать я понимаю право что вы хотите знать, почему ваш код пропускает, когда 'imageItem == null'? –

+0

Я понимаю, почему код в if (imageItem =! Null) не выполняется. Я хотел бы знать, почему, когда я создаю экземпляр imageItem, он равен нулю, и что мне нужно сделать, чтобы его правильно инициализировать. –

+1

Вы пытаетесь применить объект 'Item' к' ImageItem': 'item as ImageItem'. Если это не удается, оно возвращает «null». – Stephen

ответ

2

Оператор as как операция литья. Однако, если преобразование не представляется возможным, так как возвращает нулевое значение, а не поднимать исключение

так, если ток item в layer.Items не ImageItem вы получаете null назначенный imageItem в этой строке

ImageItem imageItem = item as ImageItem; 
+0

Спасибо, теперь я посмотрю, почему преобразование невозможно, но у меня нет никаких указаний, почему это так. –

Смежные вопросы