Автоматическая инициализация списков C # - PullRequest
45 голосов
/ 09 июля 2009

Я создаю новый список C # (List<double>). Есть ли способ, кроме как сделать цикл по списку, чтобы инициализировать все начальные значения в 0?

Ответы [ 6 ]

56 голосов
/ 09 июля 2009

В дополнение к предоставленным функциональным решениям (с использованием статических методов класса Enumerable) в конструктор можно передать массив double s.

var tenDoubles = new List<double>(new double[10]);

Это работает, потому что значение по умолчанию double уже равно 0 и, вероятно, работает немного лучше.

41 голосов
/ 09 июля 2009

Вы можете использовать инициализатор:

var listInt = new List<int> {4, 5, 6, 7};
var listString = new List<string> {"string1", "hello", "world"};
var listCustomObjects = new List<Animal> {new Cat(), new Dog(), new Horse()};

Так что вы можете использовать это:

var listInt = new List<double> {0.0, 0.0, 0.0, 0.0};

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

37 голосов
/ 09 июля 2009

Используйте этот код:

Enumerable.Repeat(0d, 25).ToList();
new List<double>(new double[25]);     //Array elements default to 0
18 голосов
/ 09 июля 2009

Можно использовать Enumerable.Range:

int capacity;
var list = Enumerable.Range(0, capacity).Select(i => 0d).ToList();

Еще есть:

int capacity;
var list = new List<double>(new double[capacity]);
2 голосов
/ 27 августа 2015

Немного опоздал, но, возможно, все еще интересен: Используя LINQ, попробуйте

var initializedList = new double[10].ToList()

... надеюсь, избежать копирования списка (теперь это до LINQ).

Это должен быть комментарий к ответу Майкла Медоуза, но мне не хватает репутации.

0 голосов
/ 09 июля 2009

Для более сложных типов:

List<Customer> listOfCustomers =
        new List<Customer> {
            { Id = 1, Name="Dave", City="Sarasota" },
            { Id = 2, Name="John", City="Tampa" },
            { Id = 3, Name="Abe", City="Miami" }
        };

отсюда: Блог Дэвида Хейдена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...