【发布时间】:2018-12-12 04:53:45
【问题描述】:
使用 c# .net 4.7.1 我有一个名为 Deck 的类,代码如下:
public class Deck
{
public Card[] DeckOfCards { get; private set; } = new Card[56];
public Deck()
{
DeckOfCards = NewDeck();
}
private Card[] NewDeck()
{
Card[] newDeck = new Card[56];
....
return newDeck;
}
}
我想在Deck 中声明一个名为Shuffle 的类方法,我可以在我创建的Deck 实例上调用它。以下是我在程序中描绘的 Main 方法的样子:
class program
{
static void Main(string[] args)
{
Deck WorkingDeck = new Deck();
WorkingDeck.DeckOfCards.Shuffle();
....
}
}
到目前为止,这是我对类方法 Shuffle 的所有内容:
public Card[] Shuffle(this Card[] DeckToShuffle)
{
Random rnd = new Random();
Card[] ShuffledDeck = DeckToShuffle.OrderBy(x => rnd.Next()).ToArray();
return ShuffledDeck;
}
但这要求我在方法调用中传递Card[]。我想要使用WorkingDeck.DeckOfCards 作为被洗牌的Deck 的方法。有人可以指出我能够做到这一点的正确方向吗?提前致谢。
【问题讨论】:
-
你不需要暴露
DeckOfCards。你有一个非静态类Deck。让它代表一副纸牌。有一个构造函数,它带有一个关于它是否应该包含小丑的标志。有一个方法叫Shuffle,另一个叫TakeTopCard。另一个称为Deal,带有两个参数cardsPerHand和hands。但不要直接暴露你的纸牌存储。这样,如果您认为List<Card>比数组更有意义,您可以更改实现而不更改卡片组的公共抽象。
标签: c# method-call