2010-06-18 90 views
4

對不起,如果這個問題太簡單或容易。爲什麼我不能在功能級別聲明委託?

我剛開始學習使用C#的代表。當我試圖在函數中聲明一個函數時,我得到了設計時錯誤,但是當我在類級別聲明相同的代理時,它工作正常。爲什麼?

如果事情是這樣的代碼:delegate void Test();

回答

8

據我所知,宣佈這樣一個委託(在C#中,我以爲是你所使用的語言)的聲明一個新的類型。就像你不能在方法中聲明類,結構或接口一樣,你不能聲明這種類型。

編輯:如果您剛剛學習代表,並且語言確實是c#,請考慮使用Func模板化代表!它可以讓你無處不在地宣佈。

http://msdn.microsoft.com/en-us/library/bb549151.aspx

+1

其次看看Func <>和Action <>。如果您正在尋找一種方法內部的類似於委託的功能,這些就是要走的路。沒有用於在方法內創建實際委託的用例。 – drharris 2010-06-18 19:40:32

0

一個函數中定義的委託將基本上聲明一個函數中的一個函數。代表的意圖是在函數/方法之間傳遞它們,所以它們僅在類級聲明時纔有用。