Ответ 1
Самое короткое, что вы можете получить, это использовать Tuple.Create
вместо new Tuple
:
var foo = new [] { Tuple.Create(1, "x", true), Tuple.Create(2, "y", false) };
Каков самый простой/короткий путь, я могу написать инициализатор встроенной коллекции?
Мне не нужны имена ссылок, индексы прекрасны, и элемент нужно использовать только в области метода.
Я думаю, что анонимная коллекция типов будет более грязной, потому что мне придется писать имя ключа каждый раз.
В настоящее время я получил
var foo = new Tuple<int, string, bool>[]
{
new Tuple<int, string, bool>(1, "x", true),
new Tuple<int, string, bool>(2, "y", false)
};
Im надеясь, что С# 4.0 будет что-то пропущено.
Самое короткое, что вы можете получить, это использовать Tuple.Create
вместо new Tuple
:
var foo = new [] { Tuple.Create(1, "x", true), Tuple.Create(2, "y", false) };
немного меньше места там, если вы используете Tuple.Create(1,"x",true)
вместо новой вещи - и вы также можете удалить материал new Tuple<tint, string, bool>
перед массивом:
var foo = new [] { Tuple.Create(1, "x", true), Tuple.Create(2, "y", false) };
или возьмите это:
Func<int, string, bool, Tuple<int, string, bool>> T = (i, s, b) => Tuple.Create(i,s,b);
var foo = new [] { T(1, "x", true), T(2, "y", false) };
или даже
Func<int, string, Tuple<int, string, bool>> T = (i, s) => Tuple.Create(i,s,true);
Func<int, string, Tuple<int, string, bool>> F = (i, s) => Tuple.Create(i,s,false);
var foo = new [] { T(1, "x"), F(2, "y") };
Вы также можете добавить
using MyTuple= System.Tuple<int, string, bool>;
в конце ваших объявлений using
, а затем используйте MyTuple
вместо более длинной версии.