zoukankan      html  css  js  c++  java
  • const 和readonly

    原文:http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html

    关于 const和readonly修饰符之间的区别,要牵涉到C#中两种不同的常量类型:

    静态常量(compile-time constants) 和动态常量(runtime constants)

    静态常量是指编译器在编译时候会对常量进行解析,并将常量的值替换成初始化的那个值

    动态常量则是在运行的那一刻才获得值,编译器在编译期间将它标示为只读常量,而不用常量的值代替,这样动态常量不必在声明的时候就初始化,而可以延迟到构造函数中初始化.

    1.const修饰的常量在声明的时候必须初始化;readonly修饰的常量则可以延迟到构造函数初始化

    2.const修饰的常量在编译期间就被解析,即常量值被替换成初始化的值;readonly修饰的常量则延迟到运行的时候

    此外const常量既可以声明在类中 也可以在函数体内,但是 static readonly常量只能声明在类中

    public class Test
    {
        static readonly int A=B*10;
        static readonly int B=10;
        
        public static void Main()
        {
              Console.WriteLine("A is {0}, B is {1}",A,B);
         }     
    }   

    上述 输出的 结果是 A is 0 ,B is 10   为啥A不是100? 因为在运行A=B*10 时 B 还是0

    public class Test
    {
        const int A=B*10;
        const int B=10;
        
        public static void Main()
        {
              Console.WriteLine("A is {0}, B is {1}",A,B);
         }     
    }   

    上述输出的结果是 A is 100 , B is 10 ,因为 A 和 B 在编译的时候 已经对值进行了解析

      

  • 相关阅读:
    [Java] 编写第一个java程序
    [Java] 环境变量设置
    [ActionScript 3.0] 常用的正则表达式
    [ActionScript 3.0] 正则表达式
    Python学习之==>URL编码解码&if __name__ == '__main__'
    Python学习之==>面向对象编程(一)
    Linux下安装redis-4.0.10
    Linux下编译安装Python-3.6.5
    Python学习之==>发送邮件
    Python学习之==>网络编程
  • 原文地址:https://www.cnblogs.com/xinianxinqix/p/5122753.html
Copyright © 2011-2022 走看看