use*_*070 5 c# global-variables
我想在我的程序中使用一些全局变量.我们有什么可以帮助直接定义全局变量,因为我们在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
Run Code Online (Sandbox Code Playgroud)
我希望在我的C#程序中将它们定义为全局变量.请让我知道我该怎么办?
您可以在类中定义它们:
public static class Constants {
public const double CrossoverRate = 0.7;
...
}
Run Code Online (Sandbox Code Playgroud)
像这样使用它们:Constants.CrossoverRate.
但是我只会这样做,如果他们真的不变,像PI.对于可以更改的参数,我更喜欢使用具有实例级值的类.我认为你需要这种灵活性来调整你的遗传算法,或者一次使用多个参数集.这是一种方法(不可变类):
public class GeneticAlgorithmParameters {
public double CrossoverRate { get; private set; }
...
public GenericAlgorithmParameters(double crossoverRate, ... others) {
CrossoverRate = crossoverRate;
...
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您将一个实例传递GeneticAlgorithmParameters给GeneticAlgorithm类构造函数.