General CS question about constants

后端 未结 7 1359
旧巷少年郎
旧巷少年郎 2021-01-24 02:41

I\'m programming using C#, after programming on C. So I\'m using a lot of constants such as \"DEFAULT_USER_ID\", \"REMOTE_ADDRESS\" and such...

It seems to me that it\'s

相关标签:
7条回答
  • 2021-01-24 03:07

    You can use static or readonly properties, for instance, for App class

    class MyClass {
    
    public static readonly int myVal=10;
    
    }
    
    0 讨论(0)
  • 2021-01-24 03:09
    1. Your naming convention doesn't fit .net. Use PascalCase instead of SCREAMING_CAPS
    2. Be aware of the binary versioning semantics of constants in .net. You might want to use a static readonly field instead of const sometimes.
    3. Where it's conceptually a good idea use enums instead of several integer constants.
    0 讨论(0)
  • 2021-01-24 03:19

    Using constants for stuff like DEFAULT_USER_ID is still "the way to go" (unless you want it to be configurable, but that's another topic). --> const (C# Reference)

    Don't use constants for enumerations (FILE_TYPE_DOC = 1, FILE_TYPE_XLS = 2, ...). This can be done more elegantly in C# with enums:

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

    You can also use this for flags (constants combinable by bitwise operators), which is another common use case of constants in C:

    [Flags]
    enum FontDecoration {
        None = 0,
        Bold = 1,
        Italic = 2,
        Underline = 4
    }
    
    0 讨论(0)
  • 2021-01-24 03:22

    How about config files? you guys don't use config files in C#? DEFAULT_USER_ID and REMOTE_ADDRESS look very much suited to be in a config file

    0 讨论(0)
  • 2021-01-24 03:25

    Also you may define constants like that

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

    In such case you may use class Defaults anywhere in your app

    Also you may want to know that there is two ways of defining constant variables in Static readonly vs const

    0 讨论(0)
  • 2021-01-24 03:32

    You can always just use custom Enums so you get Visual Studio Intellisense.

    0 讨论(0)
提交回复
热议问题