无法分配 Action 属性

Chr*_*lsh 0 c# func

这里一定要疯了,但我看不出我在下面的代码中做错了什么导致语法错误

CS0828:无法将“方法组”分配给匿名类型属性

我看不到有关代码的任何匿名内容,该属性有一个名称。我分配给它的方法被命名为等。

    // A basic function that takes an int and has void return
    private static void DoSomething(int d) 
    {
        // .... do stuff
    };

    // A class is defined with an Action<int> delegate
    private class XX
    {
        public Action<int> YY { get; set; }
    }

    // An instance of the class which clearly assigns a known method to the property
    private static readonly XX xx = new
    {
        // error "CS0828: Cannot assign 'method group' to anonymous type property"
        YY = DoSomething
    };
Run Code Online (Sandbox Code Playgroud)

Swe*_*per 6

您将目标类型new表达式匿名类型混淆了!

new { ... }创建了一个匿名类型,因此YY存在匿名类型的属性,因此编译器不知道应该将方法组转换成什么委托类型。

您应该使用new() { ... }它来创建目标类型的对象XX,并使用对象初始化程序来初始化它。

()虽然对象初始值设定项通常允许您在没有构造函数参数时省略,但目标类型new表达式始终需要(),无论您是否使用对象初始值设定项。否则,语法会与匿名类型冲突!