2016-06-03 8 views
0

Мне нужно заполнить список:Ошибки при добавлении первого элемента в список

public class Photo 
{ 
    public string PicturePath { get; set; } 
    public string ThumbPath { get; set; } 
    public string Description { get; set; } 
} 

    List<Photo> photoList = new List<Photo>(); 

этот код терпит неудачу на photoList[z].PicturePath for z = 0 значении _PicturePath является правильным путем:

for (int z = 0; z < xTotalNbrShown; z++) 
    { 
    photoList[z].PicturePath = _PicturePath; 
    photoList[z].ThumbPath = _ThumbPath; 
    photoList[z].Description = MakeALT(FileName); 
       } 

«Индекс был . вне диапазона Должно быть неотрицательным и меньше, чем размер коллекции \ г \ nParameter. имя: индекс»

+1

Вы не добавили товар в список. Сделайте это с помощью 'photoList.Add (new Photo());' –

ответ

2
List<Photo> photoList = new List<Photo>(); 

создает пустой список. Поэтому

photoList[z].PicturePath = _PicturePath; 

потерпит неудачу при всех значениях i, так как индекс будет вне допустимого диапазона. Вместо этого создайте Photo объект и добавить его в список, как это:

for (int z = 0; z < xTotalNbrShown; z++) 
{ 
    Photo p = new Photo(); 
    p.PicturePath = _PicturePath; 
    p.ThumbPath = _ThumbPath; 
    p.Description = MakeALT(FileName); 
    photoList.Add(p); 
} 

Вместо того, чтобы устанавливать атрибуты экземпляра Фотографии одного в то время, вы можете использовать инициализатор объекта вместо:

for (int z = 0; z < xTotalNbrShown; z++) 
{ 
    Photo p = new Photo 
    { 
     PicturePath = _PicturePath, 
     ThumbPath = _ThumbPath, 
     Description = MakeALT(FileName) 
    } 
    photoList.Add(p); 
} 
0

В C# вы не можете создавать подобные Коллекции. Чтобы получить доступ или добавить элемент в коллекцию, вы должны сначала создать экземпляр коллекции, которую хотите использовать.

В этом случае, я полагаю, вы хотите использовать Список. Таким образом, ваш код будет выглядеть следующим образом;

List<Photo> photoList = new List<Photo>(); 

for (int z = 0; z < xTotalNbrShown; z++) 
{ 
    Photo photo = new Photo(); 

    photo.PicturePath = _PicturePath; 
    photo.PicturePath = _ThumbPath; 
    photo.PicturePath = MakeALT(FileName); 

    photosList.Add(photo); 
}