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#コンパイラがそれをチェックするほどスマートだと思った... –