What is the difference between const and readonly in C#?

前端 未结 30 2813
挽巷
挽巷 2020-11-22 05:05

What is the difference between const and readonly in C#?

When would you use one over the other?

30条回答
  •  孤街浪徒
    2020-11-22 05:38

    A constant member is defined at compile time and cannot be changed at runtime. Constants are declared as a field, using the const keyword and must be initialized as they are declared.

    public class MyClass
    {
        public const double PI1 = 3.14159;
    }
    

    A readonly member is like a constant in that it represents an unchanging value. The difference is that a readonly member can be initialized at runtime, in a constructor, as well being able to be initialized as they are declared.

    public class MyClass1
    {
         public readonly double PI2 = 3.14159;
    
         //or
    
         public readonly double PI3;
    
         public MyClass2()
         {
             PI3 = 3.14159;
         }
    }
    

    const

    • They can not be declared as static (they are implicitly static)
    • The value of constant is evaluated at compile time
    • constants are initialized at declaration only

    readonly

    • They can be either instance-level or static
    • The value is evaluated at run time
    • readonly can be initialized in declaration or by code in the constructor

提交回复
热议问题