【发布时间】:2011-08-16 14:04:50
【问题描述】:
在设置Action<T> 值时,我遇到了一个非常奇怪的条件语句问题。并不是我不知道如何解决这个问题,因为使用普通的if 很容易解决。
这是我的问题:
public class Test
{
public bool Foo { get; set; }
public Action<bool> Action { get; set; }
public void A()
{
Action = Foo ? B : C;//Gives compiler error
}
public void B(bool value)
{
}
public void C(bool value)
{
}
}
这给了我一个编译器错误消息
“方法组”和“方法组”之间没有隐式转换。
这很奇怪,因为我不知道为什么这是非法的。
顺便说一句,下面的语法将使它有效(从编译器的角度来看):
public void A()
{
Action = Foo ? (Action<bool>) B : C;
}
所以也许你可以把这个问题理解为,为什么需要演员表?
【问题讨论】:
标签: c# generics compiler-construction delegates