Estoy teniendo este problema realmente extraño con una declaración condicional al establecer un valor de Action<T>
. No es que no sepa cómo evitar esto, ya que es bastante fácil de resolver usando un if
normal.Declaración condicional, delegado genérico, conversión innecesaria
Aquí es mi problema:
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)
{
}
}
Esto me da un error de compilación con el mensaje
No hay conversión implícita entre 'grupo Método' y 'grupo Método'.
Lo que es extraño ya que no puedo entender por qué esto sería ilegal.
Por cierto, la siguiente sintaxis hará que esta válida (desde el punto de vista compiladores):
public void A()
{
Action = Foo ? (Action<bool>) B : C;
}
Así que tal vez se puede leer la pregunta, ¿por qué es necesario el elenco?
pensé que el compilador de C# es lo suficientemente inteligente como para comprobar que ... –