В моем проекте я использую довольно сложную (и вложенную) коллекцию:
List<Pair<List<Pair<double>>, double>> myCollection
Поскольку я использую его таким же образом в нескольких местах в моем проекте, я хотел бы преобразовать его в новый класс. Но у меня есть некоторые сомнения ...
Каков наилучший способ обработки коллекций такого типа, создания внутреннего поля и передачи в качестве общедоступных только выбранных элементов:
public class MyComplicatedCollection
{
private List<Pair<List<Pair<double>>, double>> myInnerCollection = null;
// Here come some constructors, data accessors etc... only to those elements which I would like to pass as public.
}
Или, может быть, другим путем, получая оригинальную коллекцию:
public class MyComplicatedCollection : List<Pair<List<Pair<double>>, double>>
{
// Here come some constructors,
// Most of the data accessors are given "out of the box"
}
Второй способ кажется более простым, но не таким безопасным, как первый. Другое дело производительность - эти коллекции действительно большие, и мне нужен довольно быстрый доступ к ним - это очень важно.
И второй вопрос: если второй способ лучше ... Для List
есть конструктор, когда вы можете заполнить свою коллекцию, передав любой ICollection
. Есть ли простой способ создать такой конструктор для моего класса, или мне нужно заполнить элемент моей коллекции элементом (или с помощью метода AddRange
)?