Инициализация списков, которая делает csc 2.0 счастливым - PullRequest
1 голос
/ 03 сентября 2010

Мне нужно инициализировать кучу списков и заполнить их множеством значений во время инициализации, но компилятору csc 2.0, который я должен использовать, это не нравится.Например:

List<int> ints = new List<int>() { 1, 2, 3 };

приведет к следующей ошибке компилятора:

ошибка CS1002:;ожидается

Есть ли способ инициализировать список, который порадует компилятор csc 2.0, не делая ничего страшного, как это:

List<int> ints = new List<int>();
ints.Add(1);
ints.Add(2);
ints.Add(3);

Ответы [ 3 ]

10 голосов
/ 03 сентября 2010

Вы используете функцию, называемую инициализаторами коллекции, которая была добавлена ​​в C # 3.0 и, следовательно, отсутствует в компиляторе C # 2.0.Наиболее близким к синтаксису является использование явного массива, переданного конструктору List<T>.

List<int> ints = new List<int>(new int[] { 1, 2, 3 });

Примечание. При таком подходе код существенно отличается от версии инициализатора коллекции C #.

2 голосов
/ 03 сентября 2010
int[] values = { 1, 2, 3, 4 };
List<int> ints = new List<int>(values);
1 голос
/ 03 сентября 2010

Поскольку вы инициализируете несколько списков, максимально сократите синтаксис.Добавьте вспомогательный метод:

 private static List<T> NewList<T>(params T[] items)
 {
     return new List<T>(items);
 }

Назовите его так:

 List<int> ints = NewList(1,2,3);
 List<string> strings = NewList("one","two","three");
 // etc.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...