[英]Method with no parameters in c# and still a method?
我要做的就是檢查列表B中的所有元素是否都在列表A中
if (listA.All(element => listB.Contains(element))
{
return;
}
有人想出了另一個解決方案,說這會起作用並且有效!
if (listA.All(listB.Contains))
return;
現在,(我知道它有效),
提前致謝。
All
方法請求謂詞作為參數: Func<T, bool>
其中T
是相同的類型是List<T>
。 此代碼有效,因為它提供了這樣的方法。 All
方法將返回一個值,該值指示在列表中的每個項上調用提供的謂詞的結果是否為true
。 該參數是對Contains
方法的引用 ,該方法匹配所需的Func<T, bool>
,獲取單個參數T
並返回bool
。
考慮以下兩行代碼:
Func<string, bool> predicate1 = s => s.Length > 5;
Func<string, bool> predicate2 = listB.Contains;
這兩行都有效,因為賦值運算符右側的表達式求值為采用單個string
參數的方法,並返回bool
。 您可以將predicate1
或predicate2
傳遞給All
方法。 它與您提供的代碼相同,只是謂詞是直接傳遞的,而不是先存儲在變量中,而是傳入變量。
但實際上並沒有將Contains
方法作為參數調用。 它僅由All
方法在內部調用。
如果您想進行不區分大小寫的搜索, 並使用與上面相同的語法,則需要一個執行不區分大小寫搜索的方法。 您可以隨時使用自定義匿名方法:
listA.All(x => listB.Any(
z => string.Equals(x, z, StringComparison.OrdinalIgnoreCase)));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.