美文网首页
C#:const 和 static readonly 区别

C#:const 和 static readonly 区别

作者: viva158 | 来源:发表于2017-04-05 13:16 被阅读0次

const

用 const 修饰符声明的成员叫常量,是在编译期初始化并嵌入到客户端程序

static readonly

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


测试类:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespaceExample02Lib

{

publicclassClass1

{

publicconstString strConst ="Const";

publicstaticreadonlyString strStaticReadonly ="StaticReadonly";

//public const String strConst = "Const Changed";

//public static readonly String strStaticReadonly = "StaticReadonly Changed";

}

}

客户端代码:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

usingExample02Lib;

namespaceExample02

{

classProgram

{

staticvoidMain(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

修改后的示例:

测试类:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespaceExample02Lib

{

publicclassClass1

{

//public const String strConst = "Const";

//public static readonly String strStaticReadonly = "StaticReadonly";

publicconstString strConst ="Const Changed";

publicstaticreadonlyString strStaticReadonly ="StaticReadonly Changed";

}

}

结果

strConst : Const

strStaticReadonly : StaticReadonly Changed

相关文章

网友评论

      本文标题:C#:const 和 static readonly 区别

      本文链接:https://www.haomeiwen.com/subject/yyyxuttx.html