Я думаю, что это плохой случай для Arrays
, который обычно не предназначен для повторного добавления и удаления. Кроме того, я бы не стал использовать этот метод расширения, поскольку он не имеет отношения к нескольким выбранным местам в вашем приложении.
Подумайте о том, чтобы просто придерживаться List и использовать метод класса, который отвечает за перемещение.
public class CardDealer {
...
private List<Card> _deck;
// Put the card [c] into [hand], and remove it from the deck.
public void Deal(List<Card> hand, Card c) {
_deck.Remove(c);
hand.Add(c);
}
}
Комментаторы предположили, что колода карт может быть лучше смоделирована как Очередь, что является законным пунктом в зависимости от того, можете ли вы брать карты только с верха колоды или нет. Если это действительно так, рассмотрите это:
public class CardDealer {
...
private Queue<Card> _deck;
// Put the top card of the deck into the specified hand.
public void Deal(List<Card> hand) {
// Deck is a Queue now. No need to specify which card to take.
Card c = _deck.Dequeue();
hand.Add(c);
}
}