可能有人解釋什麼匿名方法是在C#(以簡單的術語),並在可能的提供範例請什麼是C#中的匿名方法?
回答
將匿名方法引入到C#2中作爲創建委託實例的一種方式,而無需編寫單獨的方法。他們可以用捕獲內部的局部變量,使其成爲關閉的一種形式。
匿名方法看起來像:
delegate (int x) { return x * 2; }
,並且必須被轉換到一個特定的委託類型,例如通過分配:
Func<int, int> foo = delegate (int x) { return x * 2; };
...或訂閱的事件處理程序:
button.Click += delegate (object sender, EventArgs e) {
// React here
};
欲瞭解更多信息,請參見:
- 我對delegate changes in C# 2 文章(寫了很久以前)
- MSDN on anonymous methods
- 的第5章如果你喜歡買我的書:)
注意,在C#3 lamdba詞彙具有幾乎完全取代了匿名方法(雖然他們仍然是完全有效的,當然)。匿名方法和lambda表達式共同描述爲匿名函數。
值得補充的是,匿名方法存在於本地範圍內,這意味着它們不能在程序中的其他地方共享或暴露出程序集。如果您需要重用代碼,您需要編寫一個可以調用的專用方法。 – Damian 2014-04-07 20:49:15
@Damian:我不認爲值得這麼說 - 我不記得有人想要做*(不像匿名*類型*)。我認爲從語法上來看這很明顯。 – 2014-04-07 20:50:24
匿名方法是用在通常將需要的方法和不具有一個代碼塊名稱(因此是匿名的)。
MSDN has examples of using anonymous methods。
匿名方法是根本沒有名稱的方法,該方法已經聲明,例如:
Button myButton = new Button();
myButton .Click +=
delegate
{
MessageBox.Show("Hello from anonymous method!");
};
這是隱含的行動?如果我將這個分配給一個變量,然後將該變量添加到'myButton.Click',我將不得不使用EventHandler作爲變量類型,即使它不使用參數。 – 2013-08-22 14:33:38
這些都是沒有名字的方法。
例如,普通的方法是:
public void Foo()
{
Console.WriteLine("hello");
}
雖然匿名方法可以是:
myList.ForEach(item => Console.WriteLine("Current item: " + item));
的ForEach
中的代碼實際上是一個方法,但還沒有名字,你不能打電話它從外面。
這不是一個匿名方法 - 這是一個lamdba表達式。 Lambda表達式和匿名方法統稱爲匿名函數。 – 2011-05-15 12:03:13
謝謝@Jon我只是想按照OP要求以簡單的詞語簡單地說出單詞。歡呼300K! ;) – 2011-05-15 12:14:03
- 1. 什麼是C#中的匿名類型?
- 2. 在JavaScript中匿名方法的優點和缺點是什麼?
- 3. C#中過度匿名方法閉包(c__DisplayClass1)的原因是什麼?
- 4. 在匿名內部類中調用方法是什麼?
- 5. 使用匿名函數的最乾淨的方法是什麼?
- 6. C中的遞歸和匿名方法#
- 7. C#中的簡單匿名方法
- 8. C#2中的代表/匿名方法
- 9. 什麼是Linux中的匿名inode?
- 10. 爲什麼C#中匿名類型的屬性是隻讀的?
- 11. C中匿名結構/聯合的優點是什麼?
- 12. C風格語言中匿名{}塊的用途是什麼?
- 13. 數組中的PHP匿名函數,語法是什麼?
- 14. 在Python中別名方法名的最好方法是什麼?
- 15. 什麼使得OWL類是匿名的?
- 16. 在匿名方法中捕獲對象的性能影響是什麼?
- 17. 匿名匿名方法未授權?
- 18. 爲什麼在匿名方法中不允許out參數?
- 19. 爲什麼匿名類型不能在方法中傳遞?
- 20. 爲什麼.Net 1.1中不支持匿名方法?
- 21. C#中的Arccos方法是什麼?
- 22. 什麼是C#中的「靜態方法」?
- 23. 什麼是C#中的方法組?
- 24. C#中的替代方法是什麼#
- 25. 匿名函數錯誤和什麼是匿名函數?
- 26. 在C#中,爲什麼匿名方法不能包含yield語句?
- 27. 方法,返回匿名類型C#
- 28. C#2.0線程問(匿名方法)
- 29. 匿名方法太好了嗎? (C#)
- 30. C#訂閱動態匿名方法
你可能會在這裏找到答案有用:http://stackoverflow.com/questions/208381/whats-the-difference-between-anonymous-methods-c-2-0-and-lambda-expressions – 2011-05-15 11:33:16