zoukankan      html  css  js  c++  java
  • const 和 static readonly 区别

    const: 用const修饰符声明的成员叫常量,是在编译期初始化并嵌入到客户端程序 static readonly: 用static readonly修饰符声明的成员依然是变量,只不过具有和常量类似的使用方法:通过类进行访问、初始化后不可以修改。但与常量不同的是这种变量是在运行期初始化 。

    示例:

    测试类:

    Code
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Example02Lib
    {
    public class Class1
    {
    public const String strConst = "Const";
    public static readonly String strStaticReadonly = "StaticReadonly";
    //public const String strConst = "Const Changed";
    //public static readonly String strStaticReadonly = "StaticReadonly Changed";
    }
    }

    客户端代码:

    Code
    using System;
    using System.Collections.Generic;
    using System.Text;
    using Example02Lib;
    namespace Example02
    {
    class Program
    {
    static void Main(string[] args)
    {
    //修改Example02中Class1的strConst初始值后,只编译Example02Lib项目
    //然后到资源管理器里把新编译的Example02Lib.dll拷贝Example02.exe所在的目录,执行Example02.exe
    //切不可在IDE里直接调试运行因为这会重新编译整个解决方案!!
    //可以看到strConst的输出没有改变,而strStaticReadonly的输出已经改变
    //表明Const变量是在编译期初始化并嵌入到客户端程序,而StaticReadonly是在运行时初始化的
    Console.WriteLine("strConst : {0}", Class1.strConst);
    Console.WriteLine(
    "strStaticReadonly : {0}", Class1.strStaticReadonly);
    Console.ReadLine();
    }
    }
    }


    结果:
    strConst : Const
    strStaticReadonly : StaticReadonly

    修改后的示例:

    测试类:

    Code
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Example02Lib
    {
    public class Class1
    {
    //public const String strConst = "Const";
    //public static readonly String strStaticReadonly = "StaticReadonly";
    public const String strConst = "Const Changed";
    public static readonly String strStaticReadonly = "StaticReadonly Changed";
    }
    }

    结果

    strConst : Const
    strStaticReadonly : StaticReadonly Changed

  • 相关阅读:
    图解隐马尔科夫模型【会其意】
    基于mysql对mybatis中的foreach进行深入研究
    JS-安全检测JavaScript基本数据类型和内置对象的方法
    Java-生成指定长度验证码的一种简单思路
    jQuery-表单流程导航
    JS-获取URL请求参数
    AngularJS-Uncaught Error: [$injector:modulerr]
    AngularJS-系统代码的配置和翻译
    JS-改变页面的颜色之变化核心-获取六位的随机数
    JS-为金额添加千分位逗号分割符
  • 原文地址:https://www.cnblogs.com/qfb620/p/1771555.html
Copyright © 2011-2022 走看看