2016-06-03 4 views
0

Ich brauche eine Liste zu füllen:Fehler beim Hinzufügen eines ersten Punktes zu einer Liste

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

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

dieser Code nicht der Wert von _PicturePath bei photoList[z].PicturePath for z = 0, ist ein gültiger Pfad:

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

„Index war . aus Bereich muss nicht negativ und kleiner ist als die Größe der Sammlung \ r \ nParameter. Name: index“

+1

Sie haben der Liste keinen Artikel hinzugefügt. Mach es mit 'photoList.Add (neues Foto());' –

Antwort

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

erzeugt ein leeres Liste. Daher

photoList[z].PicturePath = _PicturePath; 

wird für alle Werte von i scheitern, weil der Index außerhalb des gültigen Bereichs wäre. Stattdessen erstellen Photo Objekt, und es zu der Liste hinzufügen, wie folgt aus:

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

Anstatt die Attribute der Instanz von Foto einen nach dem anderen einstellen, könnten Sie einen Objektinitialisierer statt:

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

In C# können Sie die Sammlungen nicht so erstellen. Um auf ein Objekt zuzugreifen oder ein Objekt zur Sammlung hinzuzufügen, erstellen Sie zuerst eine Instanz der Sammlung, die Sie verwenden möchten.

In diesem Fall nehme ich an, dass Sie die Liste verwenden möchten. Dein Code wäre also wie folgt;

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); 
}