Tôi đang làm việc trên một dự án trò chơi blackjack đơn giản. Thứ nhất tôi có thể tạo các mảng của thẻ:C# Xóa mục cuối cùng khỏi mảng của chuỗi
string[] deck = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", };
hơn tôi nhân nó 4 và trao deckNumber
:
newDeck = Enumerable.Repeat(deck, deckNumber*4).SelectMany(x => x).ToArray();
khi tôi muốn xóa thẻ cuối cùng từ mảng tôi áp dụng điều này:
newDeck = newDeck.Where(w => w != newDeck.Last()).ToArray();
do đó, vấn đề là mã không loại bỏ mục cuối cùng khỏi mảng, hoạt động như có nhiều mảng và loại bỏ tất cả các phần tử cuối cùng khỏi chúng. Ví dụ với một boong:
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
khi tôi áp dụng lệnh remove tôi nó trở thành:
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
nó loại bỏ tất cả các từ mảng của A. Nhưng tôi muốn loại bỏ chỉ mục cuối cùng từ toàn bộ mảng. Whats vấn đề làm thế nào tôi có thể giải quyết này?
Trong 'w => w! = NewDeck.Last()' bạn đang so sánh chuỗi, vì vậy tất cả các chuỗi "A" được coi là bằng, that's tại sao tất cả A's được loại bỏ. (Các chuỗi được so sánh theo giá trị không theo tham chiếu) –
Giá trị đọc: http://stackoverflow.com/q/943635/397817 –