MSDN元组平等C#7.3怪异行

时间:2018-07-10 08:36:48

标签: c# syntax tuples c#-7.3

我正在阅读有关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();这样的语法来测试条件或可为空的值,但是我对此不太了解。

1 个答案:

答案 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?可以。