В C# это выражение коллекции не компилируется с помощью инициализатора коллекции списка (на мой взгляд, все должно быть на месте, чтобы оно работало, но у разработчиков Roslyn должны быть свои причины):
var list = new List
{
[ 1, 2 ] // Compiler error CS1501
};
list.Add([1, 2]); // Compiles, though
Мой вопрос: почему это вдруг работает, когда выражение коллекции оборачивается другим выражением (путем заключения его в круглые скобки)? Потому что действительно это компилируется:
var list = new List
{
([ 1, 2 ]) // Works
};
Почему компилятор становится умнее, когда выражение коллекции помещается внутри дополнительного выражения? Это что-то вроде магического заклинания? Вероятно, нет, потому что здесь выражение коллекции не преобразуется автоматически в Array:
var arr = ([1, 2]); // Compiler error CS9176
Подробнее здесь: https://stackoverflow.com/questions/793 ... ection-ini
Заключение выражения коллекции в круглые скобки меняет поведение инициализатора коллекции. ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение