调用方法vs将对象赋值给方法;void返回类型vs对象返回类型

本文关键字:返回类型 vs 对象 方法 void 调用 赋值 | 更新日期: 2023-09-27 18:10:36

为这个糟糕的标题道歉,但我不太确定如何更好地表达它。我正在创建一个相当简单的程序,只是为了在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]);

它似乎仍然像我期望的那样工作,并正确地将卡分配给玩家。

感谢您的任何评论/建议!碎"五年规划

调用方法vs将对象赋值给方法;void返回类型vs对象返回类型

这是无用的:players[i] = players[i].takeHand(hands[i]);:你不需要修改玩家,只需要修改他们的hand。正确的for是:

public void takeHand(List<Card> cards)
{
    this.hand = cards;
}

因为,IRL,当你发牌时,你不会改变整个玩家,对吗?你只要换掉他们手中的牌。

这里也是一样,你不需要每次处理时都改变player[i]。此外,您将返回this,这就像写我将Jack替换为Jack