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

回到顶部