Тип условного выражения не может быть определен (Func)

При назначении метода типу Func я получаю сообщение об ошибке компиляции Тип условного выражения не может быть определен, потому что не существует неявного преобразования между «группой методов» и «группой методов» .

Это происходит только с ? : оператор. Код:

public class Test
{
    public static string One(int value)
    {
        value += 1;
        return value.ToString();
    }
    public static string Two(int value)
    {
        value += 2;
        return value.ToString();
    }
    public void Testing(bool which)
    {
        // This works
        Func actionWorks;
        if (which) actionWorks = One; else actionWorks = Two;

        // Compilation error on the part "One : Two"
        Func action = which ? One : Two;
    }
}

Я нашел некоторую информацию о ко- и контравариантности, но я не понимаю, как это применимо к ситуации выше. Почему это не работает?

19
задан rid 10 June 2011 в 15:15
поделиться