ob在以下代碼中的含義是什麼 - 是否與item相同?For-each循環變量
foreach (var item in allItems)
{
if (excludeItems.Exists(ob => ob.Equals(item)))
{
Console.WriteLine("Item {0} excluded",item);
}
}
ob在以下代碼中的含義是什麼 - 是否與item相同?For-each循環變量
foreach (var item in allItems)
{
if (excludeItems.Exists(ob => ob.Equals(item)))
{
Console.WriteLine("Item {0} excluded",item);
}
}
ob
是lambda expression的參數。所以,如果你熟悉匿名方法,它像:
foreach (var item in allItems)
{
if (excludeItems.Exists(delegate (string ob) { return ob.Equals(item); })
{
Console.WriteLine("Item {0} excluded",item);
}
}
這是假設的ob
類型應該是string
- 它很可能不是。由於泛型類型推斷,這將取決於excludeItems
。
Lambda表達式可以更明確,從而爲這個可以寫成:
if (excludeItems.Exists((string ob) => { return ob.Equals(item); })
或
if (excludeItems.Exists((string ob) => ob.Equals(item))
基本上有在lambda表達式中的幾個小快捷方式的一個共同的情況下,可以推斷出其類型的單個參數以及來自單個表達式的返回值。
現在,在這個特定的情況下,從λ表達式創建的代表將被一次爲每個元件在excludeItems
稱爲(在foreach
循環的每次迭代)和ob
將具有該元素的值,直到它找到一個值等於item
(或用完了元素)。
ob表示排除項目中的項目
Jon Skeet再次搖擺。 – Bastardo 2011-05-10 20:11:06
感謝這是非常有幫助和詳細。我會閱讀關於lambda表達式。 – RShar 2011-05-10 20:13:46