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;任何方法之外的条件。
答案 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")