C#List任何方法 - 错误或误解

时间:2017-12-11 20:11:20

标签: list c#-4.0

Snippet 1

var list1 = new List<int>();    
list1.Add(100);    
var temp = "ABC";    

var result = list1.Any(x => x == 200 || temp == "ABC");

Snippet 2

var list1 = new List<int>();    
var temp = "ABC";    

var result = list1.Any(x => x == 200 || temp == "ABC");

在代码段1中,我期待结果= false,但它给出了我的真实,但它在代码段2中给出了预期的结果= false。

这是一个错误还是我希望它做一些它不应该做的事情?

我知道显然移动temp =&#34; ABC&#34;任何方法之外的条件。

1 个答案:

答案 0 :(得分:1)

对于.Any,列表必须包含元素,并且其中至少有一个元素必须满足Any的条件。您的条件始终为真 - 由于||temp == "ABC" - 使第一个代码段返回false的唯一因素是空列表。

第一个返回false,因为列表是EMPTY而不是因为条件为false。

Enumerable.Any Method (IEnumerable, Func)

Return Value
Type: System.Boolean
true if any elements in the source sequence pass the test in the specified 
predicate; otherwise, false

列表中没有元素==没有人通过== false。

{/ 1}}重载w / o谓词更明确地告诉它:

Enumerable.Any Method (IEnumerable)

.Any()

概念: 您可以将Return Value Type: System.Boolean true if the source sequence contains any elements; otherwise, false. 视为

.Any(x=>x ==200 || temp == "ABC")