c # Получить свойство объекта из ArrayList - PullRequest
2 голосов
/ 08 сентября 2010

Не могу понять это

У меня есть 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

't work!

Ошибка 1: «объект» не содержит определения для «slideTitle», и невозможно найти метод расширения «slideTitle», принимающий первый аргумент типа «объект» (вы пропустилидиректива об использовании или ссылка на сборку?)

Ответы [ 3 ]

11 голосов
/ 08 сентября 2010

Значения в 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 голос
/ 08 сентября 2010

try:

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

Необходимо преобразовать из объекта типа.

0 голосов
/ 08 сентября 2010

Просто чтобы получить этот код с современными идиомами:

public ArrayList productImages = new ArrayList();

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

может быть переписано как:

var productImages = new List<ProductImage> { new ProductImage { ImageID = 123 } };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...