image

编辑人: 人逝花落空

calendar2025-05-09

message7

visits409

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

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:const 和 static readonly 区别?

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share