如何在没有首先在C#中调用它的构造函数的情况下调用方法

时间:2013-08-11 02:31:27

标签: c# oop

我希望我可以在不上传代码的情况下完成这项工作。我在VS 2012中有一个Draw Poker控制台应用程序,大约有5个面向对象的类。是的,这是家庭作业,但我是一名经验丰富的开发人员,学习C#。

我的目标是在每手牌之后补充牌组,这样玩家可以从52张牌中抽取,并且可以想象每次抽牌1点时失去100点。如果在几次抽签后甲板耗尽,这是不可能的。

问题:我被告知要调用CreateDeck方法但是我没有看到如何在不调用构造函数的情况下执行此操作。然而,如果我这样做,新的Deck对象被实例化但没有被引用;原始牌组被引用并在每次抽签中迅速耗尽。

相关问题是每次抽签都会执行多个DealHands,从而增加了牌组耗尽的速度。

由于这个系统是分散在五个类中的数百行代码,因此我不知道如何包含我的代码。虽然我可以,显然包括方法调用,我被告知构造函数不会自行工作。不确定导师的意思。

我可以将压缩系统通过电子邮件发送给感兴趣的人。

谢谢。

1 个答案:

答案 0 :(得分:2)

每次开始新游戏时都要创建一个新的Deck:

Deck deck = new Deck();
...
Card card = deck.NextCard();

在Deck的构造函数中,有代码设置一个新的52卡洗牌组。

public class Deck
{
    public Deck ()
    {
        // Create List/Array of shuffled cards here
    }
}

如果您真的希望将此作为静态方法添加到Deck的Shuffle()方法

public static void Shuffle()
{
    // Shuffle cards here
}

并致电

Deck.Shuffle() 

请注意,您在上调用Shuffle而不是deck实例,如第一个示例所示。在这种情况下,您的List / Array卡也必须是静态的。