【问题标题】:How to define constants in Visual C# like #define in C?如何在 Visual C# 中定义常量,如 C 中的#define?
【发布时间】:2010-12-20 22:28:31
【问题描述】:

在 C 中你可以像这样定义常量

#define NUMBER 9

因此,无论 NUMBER 出现在程序中的何处,它都会被替换为 9。但 Visual C# 不会这样做。是怎么做到的?

【问题讨论】:

  • 一个更好的 C# 用例:#define SOMETYPE typeof(MyClass),用于保存 D.R.Y.当打电话给SomeMethod<SOMETYPE>()
  • @SlippD.Thompson 我认为您可以通过使用 Type 而不是 int 来做与接受的答案相同的事情。

标签: c# constants


【解决方案1】:

什么是“Visual C#”?哪有这回事。只是 C# 或 .NET C# :)

另外,Python 的常量 CONSTANT_NAME 约定在 C# 中并不常见。我们通常根据 MSDN 标准使用 CamelCase,例如public const string ExtractedMagicString = "vs2019";

来源:Defining constants in C#

【讨论】:

    【解决方案2】:

    c 语言:#define(例如#define counter 100)

    在汇编语言中:equ(例如 counter equ 100)

    在 C# 语言中:according to msdn refrence: 您使用#define 来定义一个符号。当您使用该符号作为传递给#if 指令的表达式时,该表达式的计算结果为真,如以下示例所示:

    # define DEBUG

    #define 指令不能像在 C 和 C++ 中通常那样用于声明常量值。 C# 中的常量最好定义为类或结构的静态成员。如果您有多个此类常量,请考虑创建一个单独的“常量”类来保存它们。

    【讨论】:

      【解决方案3】:

      在 C# 中,根据 MSDN 库,我们有一个“const”关键字,它可以完成其他语言中的“#define”关键字的工作。

      “...当编译器在 C# 源代码中遇到常量标识符(例如,月份)时,它会将文字值直接替换为它生成的中间语言 (IL) 代码。” (https://msdn.microsoft.com/en-us/library/ms173119.aspx)

      在声明时初始化常量,因为它们没有改变。

      public const int cMonths = 12;
      

      【讨论】:

        【解决方案4】:
        static class Constants
        {
            public const int MIN_LENGTH = 5;
            public const int MIN_WIDTH  = 5; 
            public const int MIN_HEIGHT = 6;
        }
        
        // elsewhere
        public CBox()
        {
            length = Constants.MIN_LENGTH; 
            width  = Constants.MIN_WIDTH; 
            height = Constants.MIN_HEIGHT;  
        }
        

        【讨论】:

        • 欢迎您,在这里,解释为什么要使用您的解决方案而不是如何使用是一个很好的做法。这将使您的答案更有价值,并帮助进一步的读者更好地理解您是如何做到的。我还建议您查看我们的常见问题解答:stackoverflow.com/faq
        • 如果它不是一个宏,为什么有可怕的全大写命名?不妨给它们起有意义的名字,并认为它们是有效的常量,而不是假装它们是宏。
        【解决方案5】:
        public const int NUMBER = 9;
        

        你需要把它放在某个类中,用法是ClassName.NUMBER

        【讨论】:

        • 如果它不是一个宏,为什么有可怕的全大写命名?不妨给常量起一个有意义的名字,并认为它是一个有效的常量,而不是假装它是一个宏。
        • 有没有办法定义程序范围的变量而无需使用类来调用?
        • @MrUniverse 我同意你的观点,我讨厌看到Constants.SECURITY_KEY。我更喜欢Constants.SecurityKey
        • @MrUniverse 由您的团队决定在命名变量时使用什么标准。一些工具强制您对常量使用大写字母(我们在 resharper 插件的设置中进行了检查),但如果您不想使用该标准,您可以关闭该规则。
        • 我想知道,这是否使用 RAM?我想像在 C 中一样使用 #define 的原因是为了节省性能,同时允许轻松更改变量和更短的类型代码。
        【解决方案6】:

        在 MSDN 上查看How to: Define Constants in C#

        在 C# 中,#define 预处理器 指令不能用于定义 常量的方式通常是 在 C 和 C++ 中使用。

        【讨论】:

          【解决方案7】:

          您不能在 C# 中执行此操作。请改用const int

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-10-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多