Компилятор C # не распознает методы yield return как похожие?

Если у меня есть два yield return метода с одинаковой сигнатурой, компилятор, похоже, не распознает их как похожие.

У меня есть два метода yield return , подобных этому:

    public static IEnumerable OddNumbers(int N)
    {
        for (int i = 0; i < N; i++)
            if (i % 2 == 1) yield return i;
    }
    public static IEnumerable EvenNumbers(int N)
    {
        for (int i = 0; i < N; i++)
            if (i % 2 == 0) yield return i;
    }

С этим я ожидаю, что следующий оператор будет нормально компилироваться:

Func > generator = 1 == 0? Четные числа: нечетные числа; // Не компилируется

Я получаю сообщение об ошибке

Тип условного выражения не может быть определен из-за наличия нет неявного преобразования между 'группой методов' и 'группой методов'

Однако явное приведение работает:

Func > newGen = 1 == 0? (Func >) Четные числа: (Func >) OddNumbers; // Работает нормально

Я что-то упустил или это ошибка компилятора C # (я использую VS2010SP1)?

Примечание: я прочитал this и все еще считаю, что первый

РЕДАКТИРОВАТЬ: Убрано использование var в фрагментах кода, поскольку я не собирался спрашивать об этом.

10
задан mherle 22 July 2011 в 12:17
поделиться