Почему этот код:Почему у IEnumerator должен быть хотя бы один оператор yield, даже если он недоступен?
public IEnumerator Test()
{
}
Дает ошибку:
Error CS0161 'Test.GetEnumerator()': not all code paths return a value
Однако этот код:
public IEnumerator Test()
{
if(false)
yield return 0;
}
нет? (и работает так, как ожидалось, сначала MoveNext() возвращает false)
При использовании IEnumerators в качестве сопрограммы, иногда вы хотите сделать сопрограмму (IEnumerator), которая еще не имеет асинхронных операций (не приносит ничего), но может сделайте это в будущем.
Вы также можете использовать 'yield break;' вместо оператора dummy if. –