C# C语言中的全局变量#

C# C语言中的全局变量#,c#,global-variables,C#,Global Variables,我想在我的程序中使用一些全局变量。我们有什么可以帮助直接定义全局变量,就像我们在C++中定义的一样。p> 例如:假设我在C++中有下面提到的全局变量: #define CROSSOVER_RATE 0.7 #define MUTATION_RATE 0.001 #define POP_SIZE 100 #define CHROMO_LENGTH 300 #define GENE

我想在我的程序中使用一些全局变量。我们有什么可以帮助直接定义全局变量,就像我们在C++中定义的一样。p> 例如:假设我在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;
  ...
}
像这样使用它们:
常量。交叉高估

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

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

public static class Constants
{
    public const string MyConstant = "constantValue";
}
你可以这样称呼他们:

public void MyMethod
{
    var string = Constants.MyConstant;
}

顺便说一下,这是坏的C++代码。@康拉德鲁道夫:这是无益的批评。你应该避免全局变量---这是坏的。practice@IgbyLargeman因为这是一个特别过时的成语,我这里唯一能给出的忠告就是读一本现代的C++书籍。我可以指出,在这里使用宏既没有好处,也有很多缺点(这并不能真正解释任何事情!注释太短),但这可能是一个棘手的问题;它们是编译时常量。它的便利性相当于硬编码值。你能在C#中使用“string”作为变量名吗?@jb:只在前面加一个@in:
@string
。这是一个很好的解决方案。谢谢……:)
public void MyMethod
{
    var string = Constants.MyConstant;
}