const 和 static readonly 区别?

C#

答:

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

同类其他面试题 点击新一篇或旧一篇可浏览全部同类面试题

新一篇:
旧一篇:

你有答案? 你对以上面试题有意见? 你想发表你的见解? 写下来吧!你的分享将会让很多人受益!

相关面试题

·C#关于String的面试题
·C#程序设计笔试题
·C#方向高级开发人员面试时应该事先考虑的问题
·C#面试题(语法,附答案)
·C#面试题

版权声明:本站大部分内容为原创! 另有少部分内容整理于网络,如需转载本站内容或关切版权事宜请联系站长。未经允许,严禁复制转载本站内容,否则将追究法律责任。 本站欢迎与同类网站建立友情链接,请联系QQ:176687814