首页 > 解决方案 > c#如何编写可以在类的实例上调用的类方法

问题描述

使用 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.DeckOfCardsDeck被洗牌。有人可以指出我能够做到这一点的正确方向吗?提前致谢。

标签: c#method-call

解决方案


在这种特殊情况下,扩展方法将是一个很好的解决方案。

public static class Extensions
{
    public static void Shuffle(this IEnumerable<Card> source)
    {
        // Body of Shuffle
    }
}

这将帮助您根据需要调用 shuffle

Deck WorkingDeck = new Deck();
WorkingDeck.DeckOfCards.Shuffle();

推荐阅读