检查 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
在执行此行后不为空。
在该行中,您将检查列表是否已分配。因此,您正在检查新命令的正确行为。
一个空列表在内存中仍然有一个地址。
我想检查 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
在执行此行后不为空。
在该行中,您将检查列表是否已分配。因此,您正在检查新命令的正确行为。 一个空列表在内存中仍然有一个地址。