对这个非常糟糕的标题表示歉意,但我不太确定如何更好地表达它。我正在创建一个相当简单的程序,只是为了玩弄 C# 中的继承,包括向玩家发牌。我想知道最好的方法是什么,以及这两种为玩家分配手牌的方法之间有什么区别:
在 Player 类中:
public Player takeHand(List<Card> cards)
{
this.hand = cards;
return this;
}
然后在“House”类(即庄家/主类)中,循环遍历玩家并发牌:
List<Player> players = new List<Player>() {new Player.. new Player..};
List<List<Card>> hands;
for (int i = 0; i < players.count; i++)
{
hands.Add(new List<Card>());
for (int j = 0; j < cardsToDeal; j++)
{
hands[i].Add(dealCard());
}
players[i].takeHand(hands[i]); // correct?
players[i] = players[i].takeHand(hands[i]); // correct?
}
我的第一个问题是调用“takeHand”方法的正确方法是什么?它们的工作原理似乎相同。
我的第二个问题是,让“takeHand”方法返回“void”,然后不返回“this”有什么区别?即:
public void takeHand(List<Card> cards)
{
this.hand = cards;
}
然后做:
players[i].takeHand(hands[i]);
它似乎仍然按照我的预期工作,并将卡片正确分配给玩家。
感谢您的任何评论/建议! 五年计划
最佳答案
这是没用的:players[i] =players[i].takeHand(hands[i]);
:您不需要修改玩家,只需修改他们的手
。正确的是:
public void takeHand(List<Card> cards)
{
this.hand = cards;
}
因为,IRL,当你发牌时,你不会改变整个玩家,对吧?你只要改变他们手中的卡就可以了。
这里也是一样,你不需要每次发牌时都改变player[i]
。此外,您返回的 this
就像写 I Replace Jack with Jack
关于c# - 调用方法与将对象分配给方法 AND void 返回类型与对象返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32311314/