代码之家  ›  专栏  ›  技术社区  ›  Jonathan Dunn

imageItem在c中返回null#

  •  0
  • Jonathan Dunn  · 技术社区  · 13 年前

    我有一行代码要从这个项目中提取图像数据,但代码会跳过,因为imageItem=null。造成这种情况的可能原因是什么?

    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++;
            }
        }
    }
    
    1 回复  |  直到 13 年前
        1
  •  2
  •   Guru Stron    13 年前

    这个 as 操作员就像一个铸造操作。但是,如果转换不可能,as将返回null,而不是引发异常

    所以如果电流 item 在里面 layer.Items 不是 ImageItem 你得到了 null 分配给 imageItem 在这一行

    ImageItem imageItem = item as ImageItem;