Perché non è possibile utilizzare sia il rendimento sia il rendimento restituito nello stesso metodo?Perché non è possibile utilizzare "return" e "yield return" nello stesso metodo?
Ad esempio, possiamo avere GetIntegers1 e GetIntegers2 di seguito, ma non 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;
}
}
aspetta un secondo, jon skeet verrà ora. – Juvanis
Aggiungerò che se davvero ne hai bisogno, potresti creare un GetIngegers4 che chiama GetIntegers1 o GetIntegers2 a seconda di una condizione. – xanatos
Questo è probabilmente ovvio, ma in questi casi è sempre possibile srotolare la raccolta e restituire gli articoli: foreach (var item in new [] {4,5,6}) yield return item; – Foo42