构造函数重复中的方法

时间:2013-11-06 10:59:59

标签: c#

我只想要一次“BombenGenerieren(anzahlMinen)”,我该怎么写呢,它每周都不会产生新的炸弹?

public Game(int anzahlMinen, int xeingabe, int yeingabe)
{
  _minenArray = new int[5, 5];
  _emptyArray = new int[5, 5];
  _boolArray = new bool[5, 5];
  program = new Program();
  zeichnen = new Draw();

  BombenGenerieren(anzahlMinen);
  FillPlayMap();
  Umdreher(yeingabe, xeingabe);
  zeichnen.OpenField(_minenArray, _boolArray);
  //SeenMap();

}

2 个答案:

答案 0 :(得分:1)

我假设Game是构造函数,并且您希望执行一次BombenGenerieren并在实例之间共享它。

你应该做的是使BombenGenerieren静态并存储BombenGenerieren在一个或多个静态字段或属性中的影响。然后,您应该在实例化新的Game.BombenGenerieren对象之前调用Game,或者创建一个静态构造函数,如下所示:

public static Game()
{
    BombenGenerieren(anzahlMinen);
}

第一次使用Game类型时,将执行静态构造函数。请注意,它不带参数,因此anzahlMinen必须是常量。如果这是一个问题,请使用常规静态方法。

另一种方法是将BombenGenerieren方法的结果封装在一个对象中,并将其传递给Game构造函数,这可以将结果应用于每个新类。

答案 1 :(得分:0)

基本上,使用boolean变量来跟踪BombenGenerieren的执行情况。

boolean bombenGeneriert = false;

public Game(int anzahlMinen, int xeingabe, int yeingabe) {
    //...

    BombenGenerieren(anzahlMinen);

    //...
}

public void BombenGenerieren(int minen) {
    if (!bombenGeneriert) {
        bombenGeneriert = true;

        //the rest of your code in this method
    }
}

这将在第一个方法执行时将bombenGeneriert设置为true。现在,在每次执行时,它都会检查!bombenGeneriert,它将评估为false

此外,您应该考虑重新安排代码。我怀疑您不止一次致电Game(),因此您应该重新定位BombenGenerieren()方法,Game()以外的地方。

如果GameGame()构造函数,那么bombenGeneriert必须是静态的:

static boolean bombenGeneriert = false;