为什么我不能在功能级别声明代理?

时间:2010-06-18 19:18:00

标签: c# delegates

很抱歉,如果这个问题过于简单或容易。

我刚开始使用C#学习代表。当我试图在函数内声明一个时,我得到了设计时错误,但是当我在类级别声明相同的Delegate时,它工作正常。为什么呢?

如果这是代码: delegate void Test();

2 个答案:

答案 0 :(得分:8)

AFAIK,声明像这样的委托(在C#中,我假设是你正在使用的语言)声明一个新类型。正如您无法在方法中声明类,结构或接口一样,您也无法声明此类型。

编辑:如果您只是学习代理,并且语言确实是c#,请考虑使用Func模板化委托!它将使您免于在任何地方声明。

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

答案 1 :(得分:0)

在函数中定义委托主要是在函数内声明一个函数。委托的意图是在函数/方法之间传递它们,因此它们仅在类级别声明时才有用。