Questa è probabilmente una semplice domanda di sintassi, ma non riesco a capirlo.Implementazione di IEnumerable con una matrice
Normalmente, vorrei fare questo:
public class OrderBook : IEnumerable<PriceLevel>
{
private readonly List<PriceLevel> PriceLevels = new List<PriceLevel>();
public IEnumerator<PriceLevel> GetEnumerator()
{
return PriceLevels.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return PriceLevels.GetEnumerator();
}
}
Ma invece di una lista, voglio utilizzare un array - simile a questo:
public class ArrayOrderBook : IEnumerable<PriceLevel>
{
private PriceLevel[] PriceLevels = new PriceLevel[500];
public IEnumerator<PriceLevel> GetEnumerator()
{
return PriceLevels.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return PriceLevels.GetEnumerator();
}
}
La IEnumerator IEnumerable.GetEnumerator()
sembra per compilare bene - ma la pubblico IEnumerator<PriceLevel>
dice che ho bisogno di un qualche tipo di cast - qual è il modo migliore per farlo?
William
Perché? Perché usare un array per questo? – Oded
'List' viene eseguito il backup da un array stesso, quindi non stai guadagnando nulla, tranne una complicazione eccessiva del tuo lavoro. – Tudor
@Tudor a seconda di quale altra logica va nella classe, potrebbe essere più logico che 'PriceLevels' sia un array (ad esempio una dimensione fissa). Non c'è niente di sbagliato nel volerlo refactoring. –