注意到答案中缺少代码和文档,因此我在 .NET 5 中尝试了一些不同的相等性检查,所有这些检查都带有==
, 以查看它们的评估方式。阐明。
底线似乎是,如果元组中的所有单个值都是它们自己的版本default
,则元组是default
。如果你新建一个元组,= default
所有内容都设置为它自己的default
.
这有点道理。
实际代码1
注意:此测试是在 .NET 5 控制台应用程序中执行的。
static void TupleDefault()
{
(int first, string second) spam = new(1, "hello");
(int first, string second) spam2 = default;
Console.WriteLine(spam == default); // False
Console.WriteLine(spam2 == default); // True
Console.WriteLine(spam2.first); // 0
Console.WriteLine(spam2.first == 0); // True
Console.WriteLine(spam2.second); // Nothing.
Console.WriteLine(spam2.second == null); // True
// ==== Let's try to create a default "by hand" ====
(int first, string second) spam3 = new(0, null);
// It works!
Console.WriteLine(spam3 == default); // True
}