【发布时间】:2015-01-12 19:13:27
【问题描述】:
我正在开发一个简单的二十一点游戏项目。首先我创建卡片数组:
string[] deck = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", };
我将它乘以 4 并给出deckNumber:
newDeck = Enumerable.Repeat(deck, deckNumber*4).SelectMany(x => x).ToArray();
当我想从数组中删除最后一张卡片时,我会应用这个:
newDeck = newDeck.Where(w => w != newDeck.Last()).ToArray();
所以问题是代码不会从数组中删除最后一项,就像有多个数组并从它们中删除所有最后一个元素一样。以一副甲板为例:
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
当我应用删除命令时,它变成:
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
它从数组中删除所有 A。但我只想从整个数组中删除最后一项。有什么问题怎么解决?
【问题讨论】:
-
在
w => w != newDeck.Last()中,您正在比较字符串,因此所有字符串“A”都被认为是相等的,这就是所有A 都被删除的原因。 (字符串是按值比较,而不是按引用)