MSDN 元组相等 C#7.3 奇怪的行
MSDN Tuple equality C#7.3 weird line
我在 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();
这样的语法来测试条件或可为 null 的值,但我不太明白它是如何工作的。
(int a, int b)?
只是一个可以为空的元组 (int a, int b)
((int a, int b)?
或实际上 Nullable<(int a, int b)>
)。
由于结构(以及元组)不能为空,因此您必须将它们包装在可为空的对象中才能使它们可为空。这就是问号的作用。
您可能已经习惯了 int
的类似情况,但不可能是 null
。 int?
可以。
我在 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();
这样的语法来测试条件或可为 null 的值,但我不太明白它是如何工作的。
(int a, int b)?
只是一个可以为空的元组 (int a, int b)
((int a, int b)?
或实际上 Nullable<(int a, int b)>
)。
由于结构(以及元组)不能为空,因此您必须将它们包装在可为空的对象中才能使它们可为空。这就是问号的作用。
您可能已经习惯了 int
的类似情况,但不可能是 null
。 int?
可以。