Подтвердить что ты не робот

Автоинициализация списков С#

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

Ответ 3

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

Enumerable.Repeat(0d, 25).ToList();
new List<double>(new double[25]);     //Array elements default to 0

Ответ 4

Одна из возможностей заключается в использовании Enumerable.Range:

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

Другим является:

int capacity;
var list = new List<double>(new double[capacity]);

Ответ 5

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

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

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

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

Ответ 6

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

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

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