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

По моему опыту, единственное время, это действительно добавляет бизнес-возможность, - когда существует потребность в 100%-й поддержке доступности. Когда у Вас есть пользователи, которые являются слабовидящими и/или используют screenreaders для просмотра сайта, необходимо удостовериться, что сайт совместим к стандартам доступности.

<забастовка> Пользователи, которые используют screenreaders, будут склонны иметь свою собственную высококонтрастную, таблицу стилей большого шрифта (если Ваш сайт не предоставит сам тот), который облегчает для screenreaders анализировать страницу.

<забастовка>, Когда screenreader читает страницу и видит таблицу, он скажет пользователю, что это - таблица. Следовательно при использовании таблицы для расположения это становится очень сбивающим с толку, потому что пользователь не знает, что содержание таблицы является на самом деле статьей вместо некоторых других табличных данных. меню должно быть списком или набором отделений, не таблицей с пунктами меню, снова это сбивает с толку. Необходимо удостовериться, что Вы используете блоки цитирования, атрибуты заголовка alt-tags, и т.д. для создания его более читаемым.

при создании дизайна управляемым CSS, тогда весь стиль может быть снят и заменен необработанным представлением, которое очень читаемо тем пользователям. Если у Вас есть встроенные стили, основанные на таблице разметки, и т.д., то Вы делаете его тяжелее для тех пользователей для парсинга содержания.

, В то время как я действительно чувствую, что обслуживание сделано легче для [приблизительно 110] вещи, когда Ваш сайт просто размечается с CSS, я не думаю, что имеет место для всех видов обслуживания - особенно, когда Вы имеете дело с CSS перекрестного браузера, который может, очевидно, быть кошмаром.

Короче говоря, Ваша страница должна описать свой состав в стандарты совместимый путь, если Вы хотите, чтобы он был доступен для упомянутых пользователей. Если Вы не имеете никакой потребности/требования и вероятно не будете нуждаться в нем в будущем, то не потрудитесь тратить впустую слишком много времени, пытаясь быть пуристом CSS:) Используют смесь стиля и методов расположения, который подходит Вам и делает Ваше задание легче.

За Ваше здоровье!

[РЕДАКТИРОВАНИЕ - добавленное перечеркивание к неправильным или вводящим в заблуждение частям этого ответа - см. комментарии]

47
задан Peter Mortensen 24 September 2012 в 14:12
поделиться

5 ответов

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

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

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

58
ответ дан 26 November 2019 в 19:14
поделиться

Один из вариантов - использовать Enumerable.Range :

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

Другой:

int capacity;
var list = new List<double>(new double[capacity]);
18
ответ дан 26 November 2019 в 19:14
поделиться

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

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

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

44
ответ дан 26 November 2019 в 19:14
поделиться

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

Enumerable.Repeat(0d, 25).ToList();
new List<double>(new double[25]);     //Array elements default to 0
37
ответ дан 26 November 2019 в 19:14
поделиться

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

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

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

-5
ответ дан 26 November 2019 в 19:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: