我正在阅读有关MSDN上的ValueTuple的信息,在此示例中,我看不懂其中呈现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();
这样的语法来测试条件或可为空的值,但是我对此不太了解。
答案 0 :(得分:4)
(int a, int b)?
只是一个可以为空的元组(int a, int b)
((int a, int b)?
或实际上是Nullable<(int a, int b)>
)。
由于结构(以及元组)不能为null,因此必须将它们包装为nullable才能使它们为null。那就是问号。
您可能已经习惯了int
(不能为null
)的类似情况。 int?
可以。