C#允许你定义一个隐式转换为委托类型:
class myclass
{
public static implicit operator Func<String, int>(myclass x)
{
return s => 5;
}
public static implicit operator myclass(Func<String, int> f)
{
return new myclass();
}
}
但不幸的是,我们不能使用这种方法让一个对象看起来像一个函数:
var xx = new myclass();
int j = xx("foo"); // error
Action<Func<String, int>> foo = arg => { };
foo(xx); // ok
有没有一种好的方法让自己类的对象直接在其基础实例上接受函数式参数(参数)?有点像索引器,但是使用圆括号而不是方括号?