2010-06-18 84 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

一个函数中定义的委托将基本上声明一个函数中的一个函数。代表的意图是在函数/方法之间传递它们,所以它们仅在类级声明时才有用。

相关问题