同じ方法でリターンと利回りの両方を使用することができないのはなぜですか?同じ方法で「返品」と「利回り返却」を使用できないのはなぜですか?
たとえば、GetIntegers1とGetIntegers2を下に設定できますが、GetIntegers3は設定できません。
public IEnumerable<int> GetIntegers1()
{
return new[] { 4, 5, 6 };
}
public IEnumerable<int> GetIntegers2()
{
yield return 1;
yield return 2;
yield return 3;
}
public IEnumerable<int> GetIntegers3()
{
if (someCondition)
{
return new[] {4, 5, 6}; // compiler error
}
else
{
yield return 1;
yield return 2;
yield return 3;
}
}
秒を待って、ジョン・スカートが来るでしょう。 – Juvanis
本当に必要な場合は、条件に応じてGetIntegers1またはGetIntegers2を呼び出すGetIngegers4を作成することができます。 – xanatos
これはおそらく明白ですが、そのような場合はいつでもあなたのコレクションを展開してアイテムを返すことができます: foreach(new [] {4,5,6}内のvarアイテム) yield item; – Foo42