與下面最接近的是什麼?不幸的是,以下給我一個方法名稱編譯錯誤。匿名lambda?
int val = delegate(string s)
{
return 1;
}("test");
我也試過(...)=> {...}語法,但有它非常錯誤的
與下面最接近的是什麼?不幸的是,以下給我一個方法名稱編譯錯誤。匿名lambda?
int val = delegate(string s)
{
return 1;
}("test");
我也試過(...)=> {...}語法,但有它非常錯誤的
這兩種形式的匿名函數(lambda表達式和匿名方法)都需要特定類型才能轉換爲。因此,這是有效的:
int val = ((Func<string, int>)(delegate(string s)
{
return 1;
}))("test");
所以是這樣的:
int val = ((Func<string, int>)(s => 1))("test");
我不實際使用其中任何雖然建議。這是更具可讀性使用一個單獨的局部變量:(你可以使用構造函數的語法爲好,按yBee的答案 - 但我個人比較喜歡投風格的語法)
Func<string, int> del = s => 1;
int val = del("test");
以下將編譯:
int val = ((Func<string, int>)(s => 1))("test");
但是,這並不看起來對我非常有用。
new Func<string, int>(s => 1)("test")
C#不是JavaScript,你知道嗎? – Oded 2013-02-15 14:28:16
你想做什麼? – 2013-02-15 14:28:21
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 – 2013-02-15 14:55:07