c#从ArrayList获取对象属性

时间:2010-09-08 15:34:56

标签: c# asp.net arraylist

无法想出这个

我有一个类的ArrayList:

        // Holds an image
        public class productImage
        {
            public int imageID;
            public string imageURL;
            public DateTime dateAdded;
            public string slideTitle;
            public string slideDescrip;
        }

    public ArrayList productImages = new ArrayList();

productImage newImage = new productImage();
newImage.imageID = 123;
productImages.Add(newImage);

现在我如何访问该属性?

int something = productImages[0].imageID

不起作用!

  

错误1'对象'不包含   'slideTitle'的定义,没有   扩展方法'slideTitle'   接受第一个类型的参数   可以找到'对象'(是你吗?   缺少使用指令或   装配参考?)

3 个答案:

答案 0 :(得分:11)

ArrayList中的值键入Object。您需要转换为productImage才能访问该媒体资源。

int something = ((productImage)productImages[0]).imageId;

更好的解决方案是使用类似List<T>的强类型集合。您可以指定元素类型为productImage并完全避免转换。

public List<productImage> productImages = new List<productImage>();
productImage newImage = new productImage();
newImage.imageID = 123;
productImages.Add(newImage);
int something = productImages[0].imageID;  // Works

答案 1 :(得分:1)

尝试:

 int something = ((productImage)productImages[0]).imageID;

需要从类型对象中转换。

答案 2 :(得分:0)

只是用现代习语来获取这段代码:

public ArrayList productImages = new ArrayList();

productImage newImage = new productImage();
newImage.imageID = 123;
productImages.Add(newImage);

可以重写为:

var productImages = new List<ProductImage> { new ProductImage { ImageID = 123 } };