使用 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
。有人能指出我正确的方向吗?提前致谢。
最佳答案
在这种特殊情况下,扩展方法将是一个很好的解决方案。
public static class Extensions
{
public static void Shuffle(this IEnumerable<Card> source)
{
// Body of Shuffle
}
}
这将帮助您根据需要调用随机播放
Deck WorkingDeck = new Deck();
WorkingDeck.DeckOfCards.Shuffle();
关于C# 如何编写可以在类实例上调用的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53736299/