C# 返回与返回变量结果不相同的方法
假设:C# 返回与返回变量结果不相同的方法,c#,C#,假设: returnedDeck = player.DoYouHaveAny(value); MessageBox(returnDeck.Count); 现在,问题来了。使用此方法: public Deck DoYouHaveAny(Value value) { textBoxOnForm.Text += name + " has " + cards.PullOutValues(value).Count + " " + Card.Plural(value) + Envi
returnedDeck = player.DoYouHaveAny(value);
MessageBox(returnDeck.Count);
现在,问题来了。使用此方法:
public Deck DoYouHaveAny(Value value)
{
textBoxOnForm.Text += name + " has " + cards.PullOutValues(value).Count + " " + Card.Plural(value) + Environment.NewLine;
return cards.PullOutValues(value);
}
我将始终返回Deck.Count=0
但如果我改变方法来实现这一点:
public Deck DoYouHaveAny(Value value)
{
deckToReturn = cards.PullOutValues(value);
textBoxOnForm.Text += name + " has " + cards.PullOutValues(value).Count + " " + Card.Plural(value) + Environment.NewLine;
return deckToReturn;
}
现在returnedDeck.Count将返回一些值。
纯粹是好奇,但为什么我不能直接使用“返回卡。拉出值(value);”呢
以下是PullOutValue的代码:
public Deck PullOutValues(Value value)
{
Deck deckToReturn = new Deck(new Card[] { });
for (int i = deck.Count - 1; i >= 0; i--)
if (deck[i].Value == value)
deckToReturn.Add(Deal(i));
return deckToReturn;
}
在我看来,您的PullOutValues方法做了一些事情,如果再次执行,将返回另一个值。在文本框中使用相同的方法。在第一个示例中,文本部分首先使用它,这将导致第二次使用(在返回中)为空 在第二个示例中,使用第一个方法调用将其放入变量中,然后返回该变量。但是,在这种情况下,文本必须为空。无论哪种方法,第二个示例都是更好的方法,您还应该使用deckToReturn,而不是多次调用方法PullOutValues(这通常是更好的做法)。Ok 该方法在textBoxForm.Text赋值中调用,移除匹配的卡并返回一组。
但当我返回该方法时,它会再次执行该操作。。。但是第一个已经移除了卡片。PullOutValues()实现???这只是一个猜测,但却是一个有根据的猜测:
PullOutValues
改变了对象的状态,因此对它的第二次调用将显示不同的结果。PullOutValues
做什么?从名字来看,它实际上清空了列表。你能包括卡的代码吗。PullOutValues()