这里一定要疯了,但我看不出我在下面的代码中做错了什么导致语法错误
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)
您将目标类型new表达式与匿名类型混淆了!
new { ... }创建了一个匿名类型,因此YY存在匿名类型的属性,因此编译器不知道应该将方法组转换成什么委托类型。
您应该使用new() { ... }它来创建目标类型的对象XX,并使用对象初始化程序来初始化它。
()虽然对象初始值设定项通常允许您在没有构造函数参数时省略,但目标类型new表达式始终需要(),无论您是否使用对象初始值设定项。否则,语法会与匿名类型冲突!
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |