У меня действительно странная проблема с условным оператором при установке Action
значение. Дело не в том, что я не знаю, как обойти это, поскольку это довольно легко решить, используя обычный 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;
}
Так что, возможно, вы можете прочитать вопрос, почему необходимо приведение?