Как я могу создать списоккогда пользовательский класс содержит список <T>это самостоятельно? - PullRequest
0 голосов
/ 09 октября 2011

Я пытаюсь создать класс со списком списков, но не могу заставить его работать:

public class Structure
{
    public List<int> variable1 = new List<int>();
    public double variable2 { get; set; }
}

public class StructureHolder
{
    public List<Structure> variable3 = new List<Structure>();
    public void InitLists()
    {
        variable3.Capacity = 1;
        variable3[0].variable1.Capacity = 20;
    }
    public void SomeMethod()
    {
        //Perform operations on values storred in variable3[i].variable1
    }
}

Теперь, когда я создаю SomeVariable класса StructureHolder и пытаюсь получить доступ к SomeVariable.variable3 [0] .variable2 Ошибка выхода за пределы диапазона.

Edit1: Исправлено, но я все еще получаю исключение из диапазона:

variable3.Capacity = 1;
variable3.Add(new Structure());
variable3[0].variable1.Capacity = 20;
variable3[0].variable1[0] = 123;    //out off range error

Ответы [ 2 ]

0 голосов
/ 09 октября 2011

Это потому, что вы пытаетесь получить доступ к пустому списку. Вы просто инициализируете список

public List<Structure> variable3 = new List<Structure>();

, но никогда не добавляет к нему некоторые элементы:

variable3.Add(...);

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

variable3.Add(new Structure()); // adding item
variable3[0].variable2 = 100d; // accessing just added element field
0 голосов
/ 09 октября 2011

Но список в StructureHolder пока не содержит никаких элементов.Вы должны добавить, например.

variable3.Capacity = 1;
variable3.Add(new Structure());
variable3[0].variable1.Capacity = 20;
...