MSDN Tuple равенства C#7.3 странные строки
Я читал о ValueTuple на MSDN, и есть одна строка кода, которую я не понимаю в этом примере, представляющем новое равенство кортежей в C#7.3:
var left = (a: 5, b: 10);
var right = (a: 5, b: 10);
(int a, int b)? nullableTuple = right; //this line here
Console.WriteLine(left == nullableTuple);
Я привык к '?' синтаксис как a==b?c():d();
или же c?.ToString();
чтобы проверить условия или обнуляемые значения, но я не совсем понимаю, как это работает.
1 ответ
Решение
(int a, int b)?
это просто кортеж (int a, int b)
который обнуляется ((int a, int b)?
или на самом деле Nullable<(int a, int b)>
).
Поскольку структуры (и, следовательно, кортежи) не могут быть нулевыми, вы должны обернуть их в обнуляемое значение, чтобы сделать их обнуляемыми. Это то, что делает знак вопроса.
Вы могли бы привыкнуть к аналогичным случаям с int
который не может быть null
, int?
Можно.