• const与readonly常量


                                                const与readonly常量

          const与readonly都是用来定义常量,但是它们有什么区别呢?

          下面我们来简要的说明一下:

          const修饰的常量是编译时常量,如:public const String PI=3.1415;什么是编译时常量,通俗来讲就是指你在声明时,必须要进行赋值(也就是初始化),如果不赋值,编译时会出现说“常量字段要求提供一个值”的异常。

          readonly修饰的是运行时常量,可以在声明中赋值,也可以在构造函数中赋值(注意只能在这两个地方赋值)。

          http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html(这里转载这篇文章),文章中讲的很透彻,但是还是想用自己的话,来更加通俗的描述一遍。

          C#语言中有两种不同的常量类型,也就是静态常量和动态常量,静态常量是指编译器先对常量进行解析,并将常量的值替换成初始化的那个值(也就是指编译器会传播常量)。例如下面的代码:

    class Program {
    			public static void Main(string[] args) {
    			Console.WriteLine("A is {0},B is {1} ", P.A,P. B);
    			Console.ReadKey();
    		}
    	}
    	class P {
    		public static const int A = B * 10;
    		public static const int B = 10;
    	}

    控制台中输出的是A is 100,B is 10,也就是正是上面讲到的先对常量进行解析,然后替换初始化的值。

    动态常量是指常量的值在运行的那一个刻才获得,程序在编译期间并未对常量进行解析,所以开始执行时都是默认值,如果是int类型的就是默认为0.如下面的代码:

    class Program {
    			public static void Main(string[] args) {
    			Console.WriteLine("A is {0},B is {1} ", P.A,P. B);
    			Console.ReadKey();
    		}
    	}
    	class P {
    		public static readonly int A = B * 10;
    		public static readonly int B = 10;
    	}

    控制台中输出的是A is 0,B is 10.

    const与readonly有什么相同的作用呢?

    那就是确保两者修饰的常量字段或者是常量局部变量,在后续的项目中不会由于编码操作失误而修改一些固定的值。当然如果是一些常常修改的值就不要用const或者是readonly来修饰了。

  • 相关阅读:
    mov与lea
    Android APP启动流程
    Android JAVA转Kotlin速成
    算法学习
    平衡树板子
    舞蹈链板子
    肖sir__会计分录
    多测师肖sir___项目讲解(保险、信贷系统)
    肖sir_医疗系统
    肖sir__性能测试或者压力测试你是怎么做的?
  • 原文地址:https://www.cnblogs.com/qal2767799810/p/4992759.html
Copyright © 2020-2023  润新知