const 和 static readonly 区别?

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

示例:

测试类:
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";
    }
}

 

 

客户端代码:

 


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

 

修改后的示例:

测试类:
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值