【发布时间】:2013-06-11 13:37:14
【问题描述】:
给定以下类:
public class MyType
{
public static implicit operator MyType(Func<MyType> wrapper) {
return wrapper();
}
}
从Func<MyType> 到MyType 的隐式转换,我认为以下是可能的:
public MyType MyTypeWrapper() {
return new MyType();
}
public void MyTestMethod() {
MyType m = MyTypeWrapper; // not a call!
}
但是我得到了:
无法将方法组“MyTypeWrapper”转换为非委托类型“Test.MyType”。您是否打算调用该方法?
不幸的是,当我搜索时(正如我的预期)导致tonsofquestions,答案是:
嘿,你没搞错;把
()扔到WhateverMethod结尾!
现在,当我输入此内容时,我注意到 explicit 强制转换确实可以编译:
MyType m = (MyType) MyTypeWrapper;
为什么我不能像我描述的那样将Func<MyType> 隐式转换为MyType?
【问题讨论】:
标签: c# callback implicit-conversion