给定以下课程:
public class MyType
{
public static implicit operator MyType(Func<MyType> wrapper) {
return wrapper();
}
}
从 to 的隐式Func<MyType>
转换MyType
,我假设以下是可能的:
public MyType MyTypeWrapper() {
return new MyType();
}
public void MyTestMethod() {
MyType m = MyTypeWrapper; // not a call!
}
但是我得到:
无法将方法组“MyTypeWrapper”转换为非委托类型“Test.MyType”。您是否打算调用该方法?
对我来说不幸的是,当搜索时(正如我的一半预期)导致大量 问题的 答案是:
嘿,你没搞错;折腾
()
到底WhateverMethod
!
现在,当我输入这个时,我注意到显式强制转换实际上可以编译:
MyType m = (MyType) MyTypeWrapper;
为什么我不能像我所描述的那样隐式地将 aFunc<MyType>
转换为?MyType