【发布时间】:2015-11-25 11:48:29
【问题描述】:
对于这个非常糟糕的标题表示歉意,但我不太确定如何更好地表达它。我正在创建一个相当简单的程序,只是为了在 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]);
它似乎仍然像我预期的那样工作,并且正确地将卡片分配给玩家。
感谢任何 cmets/建议! 元年
【问题讨论】:
-
关于第二部分,如果您打算使用method-chaining,请离开
return this有用
标签: c# object inheritance methods reference