5

プログラムでいくつかのグローバル変数を使用したいと考えています。C++ で #define を使用しているように、グローバル変数を直接定義するのに役立つものはありますか?

例: C++ に以下のグローバル変数があるとします。

#define CROSSOVER_RATE            0.7
#define MUTATION_RATE             0.001
#define POP_SIZE                  100        
#define CHROMO_LENGTH             300
#define GENE_LENGTH               4
#define MAX_ALLOWABLE_GENERATIONS   400

これらを C# プログラムでグローバル変数のみとして定義したいと考えています。どうすればよいか教えてください。

4

2 に答える 2

8

クラス内でそれらを定義できます。

public static class Constants {
  public const double CrossoverRate = 0.7;
  ...
}

次のように使用しますConstants.CrossoverRate

しかし、私はPIのようにそれらが本当に一定である場合にのみそれを行います。変更可能なパラメーターについては、インスタンス レベルの値を持つクラスを使用することをお勧めします。遺伝的アルゴリズムを調整したり、一度に複数のパラメーターセットを使用したりするために、この種の柔軟性が必要になると思います。これはそれを行う1つの方法です(不変クラス):

public class GeneticAlgorithmParameters {

  public double CrossoverRate { get; private set; }
  ...

  public GenericAlgorithmParameters(double crossoverRate, ... others) {
    CrossoverRate = crossoverRate;
    ...
  }

}

のインスタンスをクラス コンストラクターに渡しGeneticAlgorithmParametersますGeneticAlgorithm

于 2012-04-19T23:00:13.827 に答える
1
public static class Constants
{
    public const string MyConstant = "constantValue";
}

次のように呼び出します。

public void MyMethod
{
    var string = Constants.MyConstant;
}
于 2012-04-19T23:01:00.610 に答える