當設置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#編譯器足夠聰明來檢查... –