Как сделать так чтобы yield return возвращал "Да", если b равно true, "Нет" если b равен false, и прекращал отдавать элементы, если b равен null

Дан следующий код:

class Program
    {
        static bool? b = true;

        static void Main()
        {
          //Проверочный код
        }

        static IEnumerable<string> IsTrue()
        {

        }
    }

Как сделать так чтобы возвращал "Да", если b равен true, "Нет" если b равен false, и прекращал отдавать элементы, если b равен null. Пробовал реализовать таким способом:

static IEnumerable<string> IsTrue()
    {
        if(b == true) { yield return "Да"; }
        if (b == false) { yield return "Нет"; }
        yield break;

    }

Но я так понимаю таким образом не будет возвращаться да или нет в зависимости от булевого значения, так как итератор будет вначале возвращать "Да" как реализовать метод так, чтобы он возвращал мне значение в соответствии с задачей.


Ответы (1 шт):

Автор решения: Дима Рейхц
static IEnumerable<string> IsTrue()
    {
        while (true) 
        {
            if(b == true) 
            {
                yield return "Да";
            }
            else if (b == false)
            {
                yield return "Нет";
            }
            else if(b == null)
            {
                yield break;
            }
        }

    }

Надо было сделать yield return с циклом while и тогда это считалось правильным ответом

→ Ссылка