c# - C# 中的全局变量

标签 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

我希望在我的 C# 程序中将它们定义为仅全局变量。请让我知道我该怎么做?

最佳答案

您可以在类中定义它们:

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

像这样使用它们:Constants.CrossoverRate

但只有当它们真的不变时我才会这样做,比如PI .对于可以更改的参数,我更喜欢使用具有实例级值的类。我认为您需要这种灵 active 来调整您的遗传算法,或者一次使用多个参数集。这是一种方法(不可变类):

public class GeneticAlgorithmParameters {

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

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

}

现在您将 GeneticAlgorithmParameters 的实例传递给您的 GeneticAlgorithm 类构造函数。

关于c# - C# 中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10238037/

相关文章:

c - 将初始值设置为 c 中结构的字段?

c# - ViewModel 中用于 INotifyPropertyChanged 模型中原始属性的 getter 和 setter

c# - 异步等待代码执行不符合预期

c# - 如何首先循环遍历 Entity Framework 4.1 代码中的子对象列表

c# - CacheManager如何在运行时修改加载的配置

python - 为什么 pylint 假设模块级变量是常量?

C# 奇怪的问题 - 无法从右到左变量赋值

c# - 在紧凑的框架中以多种形式提供变量

php - $GLOBAL 在数组中设置表 调用成员函数

javascript - 有没有办法在没有全局变量的情况下取消 requestAnimationFrame ?