У меня есть два методы возврата, такие как:
Код: Выделить всё
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 ? EvenNumbers : OddNumbers; // Does not compileТип условного выражения невозможно определить, поскольку
не существует неявного преобразования между «группой методов» и «группой методов»
Однако явное литые работы:
Код: Выделить всё
Func newGen = 1 == 0 ? (Func)EvenNumbers : (Func)OddNumbers; // Works fineПримечание: я прочитал это и до сих пор считаю, что первый из них должен был скомпилироваться нормально.
EDIT: удалено использование var во фрагментах кода, поскольку я хотел спросить не об этом.
Подробнее здесь: https://stackoverflow.com/questions/678 ... as-similar
Мобильная версия