С помощью перегрузок ValueTuple.Create я могу создавать кортежи любого типа, но синтаксис C# 7.0 допускает как минимум два элемента:
Код: Выделить всё
Microsoft (R) Roslyn C# Compiler version 2.8.3.62923
Loading context from 'CSharpInteractive.rsp'.
Type "#help" for more information.
> ValueTuple.Create()
[()]
> ValueTuple.Create(1)
[(1)]
> ValueTuple.Create(1, "x")
[(1, x)]
Код: Выделить всё
> var t2 = (1, 2);
> var t1 = (1); // t1 is now int (of course)
> ValueTuple t1 = (1);
(1,23): error CS0029: Cannot implicitly convert type 'int' to 'ValueTuple'
> ValueTuple t1 = new ValueTuple(1);
> t1
[(1)]
В ветке запроса упоминаются функциональные языки программирования. Может быть, существует какой-нибудь функциональный язык, который их сейчас использует? Я не эксперт по F#, но в справочнике по кортежам не упоминается использование кортежей с одним и нулевым элементом.
Итак, вопросы TL;DR:
- Используются ли кортежи с одним и нулевым элементом в каком-либо (возможно, функциональном) языке .NET? Я имею в виду не Tuple.Create или конструкторы, а поддержку родного языка.
- Планируется ли их использовать в будущей версии C#?
- Или они существуют «на всякий случай», для будущей совместимости?
Подробнее здесь: https://stackoverflow.com/questions/517 ... s-good-for
Мобильная версия