爲什麼我不能擁有這個?我的意思是會不遺餘力的委託聲明:爲什麼我不能使用那樣的匿名方法?
int X=delegate int(){...};
我知道這是可以做到這樣:
delegate int IntDelegate();
...
IntDelegate del=delegate(){return 25;};
int X=del();
爲什麼我不能擁有這個?我的意思是會不遺餘力的委託聲明:爲什麼我不能使用那樣的匿名方法?
int X=delegate int(){...};
我知道這是可以做到這樣:
delegate int IntDelegate();
...
IntDelegate del=delegate(){return 25;};
int X=del();
托馬斯
將這項工作對您:
delegate int IntDelegate();
// other stuff...
IntDelegate _del =() => 25;
jim
[編輯] - oo PS,剛剛意識到,問題是重新使它成爲一個單一的班輪! - 我會想一想
因爲在第一個例子中,你試圖將一個委託類型分配到一個int中,而不是委託的輸出到一個int中。委託是一種存儲函數的類型,它只是返回一個您感興趣的值。
委託不是int。
如果您使用的.Net 3.5或更新版本,你可以使用內置的函數功能,而不是使用自定義(Func鍵也有泛型類型,如果你需要一個像Func鍵論據TAGES一個字符串,並返回一個int):
Func<int> X = delegate() { return 255; };
或lambda表達式:
Func<int> X =() => 255;
不幸的是,你不能說:
var X2 =() => 255;
在C#中,但你可以在F#的函數式語言中做類似的事情。相反,你會說C#中的以下內容:
var X2 = new Func<int>(() => 255);
確實需要創建委託,執行它並返回值嗎? 爲什麼不直接執行代碼?
int x = new Func<int,int>(num => num*num) (3);
將返回9,但這樣會:
int x = 3*3;
你看這個頁面:http://msdn.microsoft.com/en-us/library/0yw3tz5k(VS.80)的.aspx – 2010-07-26 13:06:10