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。对于可以更改的参数,我更喜欢使用具有实例级值的类。我认为你会想要这种灵活性来调整你的遗传算法,或者一次使用多个参数集。这是一种方法(不可变类):

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 回答