为什么我不能在函数级别声明委托?

4
抱歉如果这个问题太简单或太容易了。
我刚开始学习使用C#的委托。当我尝试在函数内部声明一个委托时,我得到了设计时错误,但是当我在类级别上声明相同的委托时,它可以正常工作。为什么会这样呢?
如果有影响的话,这是代码: delegate void Test();
2个回答

8
据我所知,在C#中声明委托就像声明一个新类型。就像你不能在方法中声明类、结构或接口一样,你也不能声明这种类型。
编辑:如果你正在学习委托,并且语言确实是C#,考虑使用Func模板化的委托!它会让你免于到处声明。

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


1
其次,看一下Func<>和Action<>。如果你正在寻找方法内部类似委托的功能,那么这些就是正确的选择。在方法内部创建实际委托没有用例。 - drharris

0
在函数内部定义委托实际上就是在函数内部声明一个函数。委托的目的是在函数/方法之间传递它们,因此只有在类级别声明时才有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接