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

  • 相关阅读:
    一元多项式的运算
    单链表逆转
    字符串函数
    历届试题 错误票据
    不用循环,不用递归,输出1~1000的整数
    sql三维数据
    SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问 (也就是跨数据库访问出错)
    由于服务器意外的断电,导致SQL SERVER服务器上数据库出现“置疑”而无法使用,
    关于delphi7的四舍五入
    关于delphi exit 继承
  • 原文地址:https://www.cnblogs.com/qfb620/p/1771555.html
Copyright © 2011-2022 走看看