Sto lavorando a un semplice progetto di gioco del blackjack. In primo luogo ho creato la serie di schede:C# Eliminazione dell'ultimo elemento dalla matrice di stringa
string[] deck = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", };
di quanto io moltiplico 4 e dato deckNumber
:
newDeck = Enumerable.Repeat(deck, deckNumber*4).SelectMany(x => x).ToArray();
quando voglio cancellare l'ultima carta dalla serie I diffusa questa:
newDeck = newDeck.Where(w => w != newDeck.Last()).ToArray();
quindi il problema è che il codice non rimuove l'ultimo elemento dall'array, si comporta come se ci fossero più array e rimuove tutti gli ultimi elementi da essi. Per esempio con un mazzo:
cards: 2 3 4 5 6 7 8 9 10 J Q K A 2 3 4 5 6 7 8 9 10 J Q K A 2 3 4 5 6 7 8 9 10 J Q K A 2 3 4 5 6 7 8 9 10 J Q K A
quando applico il mio comando remove diventa:
cards: 2 3 4 5 6 7 8 9 10 J Q K 2 3 4 5 6 7 8 9 10 J Q K 2 3 4 5 6 7 8 9 10 J Q K 2 3 4 5 6 7 8 9 10 J Q K
rimuove tutto dalla gamma del A. Ma voglio rimuovere solo l'ultimo elemento dall'intero array. Qual è il problema come posso risolvere questo?
In 'w => w! = NewDeck.Last()' stai confrontando le stringhe, quindi tutte le stringhe "A" sono considerate uguali, ecco perché tutte le A vengono rimosse. (Le stringhe vengono confrontate in base al valore non tramite riferimento) –
Vale la pena leggere: http://stackoverflow.com/q/943635/397817 –