关于常数的一般CS问题

时间:2011-01-09 13:30:07

标签: c#

我在使用C#编程后,在C上编程。所以我使用了很多常量,如“DEFAULT_USER_ID”,“REMOTE_ADDRESS”等...

在我看来,使用这些常量非常“老式”,也许还有一些其他更优雅的方法可以在对象之间使用一些常量数据。

关于如何优雅地完成这项工作的任何想法?

感谢。

7 个答案:

答案 0 :(得分:4)

DEFAULT_USER_ID这样的东西使用常量仍然是“要走的路”(除非你希望它是可配置的,但这是另一个话题)。 - > const (C# Reference)

不要将常量用于枚举(FILE_TYPE_DOC = 1FILE_TYPE_XLS = 2,...)。使用enums C#可以更优雅地完成此操作:

enum FileType {
   Doc,
   Xls,   // or, optionally, "Xls = 2".
   ...
};

你也可以将它用于标志(由按位运算符组合的常量),这是C中常量的另一个常见用例:

[Flags]
enum FontDecoration {
    None = 0,
    Bold = 1,
    Italic = 2,
    Underline = 4
}

答案 1 :(得分:2)

  1. 您的命名约定不适合.net。使用PascalCase而不是SCREAMING_CAPS
  2. 请注意.net中的二进制文件versioning semantics of constants。您有时可能希望使用static readonly字段而不是const
  3. 从概念上讲,一个好主意是使用enum而不是几个整数常量。

答案 2 :(得分:1)

例如,您可以为App类

使用静态或只读属性
class MyClass {

public static readonly int myVal=10;

}

答案 3 :(得分:1)

你也可以定义这样的常量

    public static class Defaults
    {
        public const string MyName = "SuperName";
    }

    public  class MyClass
    {
        string s = Defaults.MyName;
    }

在这种情况下,您可以在应用中的任何位置使用类默认值

您也可能想知道在Static readonly vs const

中有两种定义常量变量的方法

答案 4 :(得分:1)

另一种方法是在.config文件中存储常量值,这样您就不需要重新编译应用程序以在需要时更改值。根据代码的部署方式,将设置公开为纯文本可能适合也可能不适合。有关使用.config文件的简单示例,请参阅此文章:http://www.developer.com/net/net/article.php/3396111/Using-Application-Configuration-Files-in-NET.htm

答案 5 :(得分:0)

您可以随时使用自定义枚举,以便获得Visual Studio Intellisense。

答案 6 :(得分:0)

配置文件怎么样?你们不在C#中使用配置文件? DEFAULT_USER_ID和REMOTE_ADDRESS看起来非常适合放在配置文件中