我有一个类型为Func<dynamic>
的变量,我试图给它赋值。如果我把它分配给一个返回值类型的方法(例如int
),我得到的错误无法将返回值类型的方法分配给Func <dynamic>
“诠释方法名()”有错误的返回类型
如果我换的方法lambda调用,但是,它工作正常。另外返回引用类型的方法似乎工作正常。
private string Test()
{
return "";
}
private int Test2()
{
return 0;
}
Func<dynamic> f = Test; // Works
Func<dynamic> g = Test2; // Does not
Func<dynamic> h =() => Test2(); // Works
直接分配案例有什么问题?
这不只是'动态'。如果您将'Func'更改为'Func
@MarcinJuraszek从关于委托相容性的规范中,“对于每个值参数(没有ref或out修饰符的参数),从参数类型存在标识转换(§6.1.1)或隐式引用转换(§6.1.6)在D中相应于M中的参数类型。“在这种情况下存在隐式转换,但它不是标识或引用转换。 – Servy