C# 如何编写可以在类实例上调用的类方法

标签 c# method-call

使用 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/

相关文章:

c# - 运动学刚体自行移动

c# - 更漂亮的不格式化 Unity C# 代码 - "Cannot format Movement.cs"

ruby-on-rails - 你如何记录被调用的回调方法?

java - 在java中调用main方法

c# - 如何在 C# 中进行双向 tls 身份验证

c# - 无法从代码隐藏中找到控件,但能够找到其他控件

c# - 当不存在 MBN 设备时,来自 IMbnInterfaceManager::GetInterfaces 的结果

java - Java 中方法调用和参数之间的求值顺序

c++ - 如何将参数传递给从 CPP 中的静态库加载的方法

c# - 列表和数组的问题