C#:我可以将一个显式委托转换为一个Action委托吗?
考虑:C#:我可以将一个显式委托转换为一个Action委托吗?
delegate void Explicit();
我可以:
public void Test(Explicit d) {
Action a;
a = d; // ????
}
我遇到的情况,我需要重载,有一个构造函数:
public MyClass(Expression<Action> a) {}
但下面的过载是模糊的:
public MyClass(Action a) {}
我想通过使用显式委托可以解决模糊问题,但我需要将该显式委托转换为操作以利用现有代码。
回答:
Action a = new Action(d);
回答:
不,您不能在彼此之间使用匹配的签名转换不同的委托类型。您必须创建一个新的目标类型的委托/ lambda表达式并转发到原始类型。
回答:
还可以指定Invoke方法来创建新的Action委托
Action a = new Action(d.Invoke);
以上是 C#:我可以将一个显式委托转换为一个Action委托吗? 的全部内容, 来源链接: utcz.com/qa/261997.html