关于 CSharp 值-LINQ、Where、Find 无结果时,返回值如何?

  • 关于 CSharp 值-new DateTime() 值是多少?
  • 关于 CSharp 值-nullable 的变量 ToString() 怎样的?
  • 关于 CSharp 值-CSharp checked 关键词
  • 关于 CSharp 值-LINQ、Where、Find 无结果时,返回值如何?
  • 关于 CSharp 值-默认值
  • 关于 CSharp 值-?. 的默认值

LINQ 无结果时,返回值如何?

List<int> list = new List<int>();
var a = from o in list
		where o == 3
		select o;
Console.WriteLine(a.Count());

找不到时,返回结果不是 null。要判断有没有结果,用 a.Count()。

Where 无结果时,返回值如何?

Where 无结果时,跟 LINQ 一样的。因为 Where 本身就是 LINQ 的特定版本。

Find 无结果时,返回值如何?

List<int> list = new List<int>();
var a = list.Find(m => m == 3);
Console.WriteLine(a); // 结果为 0

List<int?> list = new List<int?>();
var a = list.Find(m => m == 3);
Console.WriteLine(a); // 结果为 nullable 的 int,与 null 不同,它可以使用其方法属性,也就是说也可以写作 a.ToString()。Write 出来为零长度字符串。

List<string> list = new List<string>();
var a = list.Find(m => m == "3");
Console.WriteLine(a == null); // True
Console.WriteLine(a); // 由于是 null,所以Write 出来是零长度字符串。
Console.WriteLine(a + ""); // 由于是 null,所以Write 出来是零长度字符串。
Console.WriteLine(a.ToString()); // ToString() 与 + "" 不同,如果对象为 null,这里不能调用 ToString(),所以这里触发异常。

Find 返回对应类型的默认值。

相关阅读

  • LINQ 的 Min、Max、Average 遇到序列不包含元素时

  • 关于 CSharp 值-new DateTime() 值是多少?
  • 关于 CSharp 值-nullable 的变量 ToString() 怎样的?
  • 关于 CSharp 值-CSharp checked 关键词
  • 关于 CSharp 值-LINQ、Where、Find 无结果时,返回值如何?
  • 关于 CSharp 值-默认值
  • 关于 CSharp 值-?. 的默认值

你可能感兴趣的