我试图让以下简单的Delegate示例正常工作.根据我从它那里拿来的一本书应该没问题,但是我收到了一个Method name expected错误.
namespace TestConsoleApp
{
class Program
{
private delegate string D();
static void Main(string[] args)
{
int x = 1;
D code = new D(x.ToString());
}
}
}
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
Han*_*ing 33
除掉 ():
D code = new D(x.ToString);
Run Code Online (Sandbox Code Playgroud)
您想指定方法,而不是执行它.
我想你的意思是:
D code = new D(x.ToString);
Run Code Online (Sandbox Code Playgroud)
注意缺少括号.在括号打开的情况下,它是一个方法调用 - 即您尝试x.ToString()在该行代码中执行.没有括号,它是一个方法组 - 一个表达式,它告诉编译器查看具有该名称的可用方法(在该上下文中),正是为了创建委托.
你在用哪本书?如果它显示的示例中确实有括号,您可能希望通过电子邮件发送作者(或至少查看本书的勘误表页面).如果它是深度的C#,我会在角落里哭泣......