检查 List<Tuple<T, T>> 是否为空

Checking if List<Tuple<T, T>> is empty

我想检查 List<Tuple<T, T>> 是否为空。使用 these 技术检查 List<string> 是否为空,我注意到其中一项检查在我的情况下不起作用:

List<Tuple<byte, string>> intermediateResult = new List<Tuple<byte, string>>();

//not working
if(intermediateResult!= null)
    Console.WriteLine("not empty");
else
    Console.WriteLine("empty");

//working
if(intermediateResult.Any())
Console.WriteLine("not empty");
else
Console.WriteLine("empty");

谁能告诉我第一个检查是什么不起作用?

不工作部分的解释:-

它不起作用,因为你正在像这样初始化你的 collection

List<Tuple<byte, string>> intermediateResult = new List<Tuple<byte, string>>();

当你像这样初始化时,中间结果不为空。这是真的。

这行代码

List<Tuple<byte, string>> intermediateResult = new List<Tuple<byte, string>>();

创建 List<Tuple<byte, string>> 的新实例并将其分配给 intermediateResult - 显然 intermediateResult 在执行此行后不为空。

在该行中,您将检查列表是否已分配。因此,您正在检查新命令的正确行为。 一个空列表在内存中仍然有一个地址。