委托:方法名称预期错误

pis*_*hio 14 c# delegates

我试图让以下简单的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)

您想指定方法,而不是执行它.


Jon*_*eet 6

我想你的意思是:

D code = new D(x.ToString);
Run Code Online (Sandbox Code Playgroud)

注意缺少括号.在括号打开的情况下,它是一个方法调用 - 即您尝试x.ToString()在该行代码中执行.没有括号,它是一个方法组 - 一个表达式,它告诉编译器查看具有该名称的可用方法(在该上下文中),正是为了创建委托.

你在用哪本书?如果它显示的示例中确实有括号,您可能希望通过电子邮件发送作者(或至少查看本书的勘误表页面).如果它是深度的C#,我会在角落里哭泣......