C# readonly和const -0019

const定义的是一个常量,在编译器编译的时候就要确定其值;编译器会把用到常量的地方替换成常量定义的具体值。

readonly定义的是一个只读变量,为了保证变量不能被改变;readonly定义的变量,在运行期间通过构造函数指定;

const定义的字段,是类级别的;

readonly定义的字段,如果同时有static修饰则是类级别,如果没有static则是实例级别的。

下面是readonly 和static readonly的示例:

    public class DocumentEditor
    {
        private static readonly uint _maxDocuments;

        static DocumentEditor()
        {
            _maxDocuments = 100;
        }
    }

    public class Document
    {
        private readonly DateTime _creationDateTime;

        public Document()
        {
            _creationDateTime = DateTime.Now;
        }

    }

  

注意:

在构造函数中不必给只读字段赋值;如果没有赋值,它的值就是其数据类型的默认值。

也可以在声明的时候给其初始化值。

原文地址:https://www.cnblogs.com/codesee/p/13111703.html