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

标签 c# object inheritance methods reference

对这个非常糟糕的标题表示歉意,但我不太确定如何更好地表达它。我正在创建一个相当简单的程序,只是为了玩弄 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/

相关文章:

c# - 图像查看器和高内存使用率

c# - 具有弯曲斜边的多边形三角形

c# - C# 中的静态成员继承,最好的方法是什么?

c# - 自定义控件是否继承基类 INotifyPropertyChanged 接口(interface)?

C# GetMethod 不返回父方法

c# - 按名称获取类型并将反序列化的 json 数据转换为该对象

c# - 替换 proxyAddresses 值

java - 检查 JRadioButton 是否被选中

python - 在 Python 中将 str 数据转换为文件对象

java - 通过扫描输入文件创建对象?