gpt4 book ai didi

c# - 调用方法 vs 将对象分配给方法 AND void 返回类型 vs 对象返回类型

转载 作者:行者123 更新时间:2023-11-30 21:55:26 25 4
gpt4 key购买 nike

很抱歉标题真的很糟糕,但我不太确定如何更好地表达它。我正在创建一个相当简单的程序,只是为了玩弄 C# 中的继承,涉及向玩家发牌。我想知道最好的方法是什么,以及这两种将手牌分配给玩家的方法之间的区别是什么:

在播放器类中:

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# - 调用方法 vs 将对象分配给方法 AND void 返回类型 vs 对象返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32311314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com