const readonly请描述const关键字同static readonly 的区别.

const readonly  时间:2022-02-23  阅读:()

c#中 readonly 和 const 的区别。。。

const常量必须在其声明时被初始化,因为其值在编译而相应对象构造之前就被设定。但是 ,readonly可以被动态设定,其既可以在初始化时设定,也可以在构造函数中设定(其他方式均不可)

请描述const关键字同static readonly 的区别.

我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等。 在多数情况下可以混用。 二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而 static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。 明白了这个本质区别,我们就不难看出下面的语句中static readonly和const能否互换了: 1. static readonly MyClass myins = new MyClass(); 2. static readonly MyClass myins = null; 3. static readonly A = B * 20; static readonly B = 10; 4. static readonly int [] constIntArray = new int[] {1, 2, 3}; 5. void SomeFunction() { const int a = 10; ... } 1:不可以换成const。new操作符是需要执行构造函数的,所以无法在编译期间确定 2:可以换成const。我们也看到,Reference类型的常量(除了String)只能是Null。 3:可以换成const。我们可以在编译期间很明确的说,A等于200。 4:不可以换成const。道理和1是一样的,虽然看起来1,2,3的数组的确就是一个常量。 5:不可以换成readonly,readonly只能用来修饰类的field,不能修饰局部变量,也不能修饰property等 其他类成员。 因此,对于那些本质上应该是常量,但是却无法使用const来声明的地方,可以使用static readonly。例 如C#规范中给出的例子: public class Color { public static readonly Color Black = new Color(0, 0, 0); public static readonly Color White = new Color(255, 255, 255); public static readonly Color Red = new Color(255, 0, 0); public static readonly Color Green = new Color(0, 255, 0); public static readonly Color Blue = new Color(0, 0, 255);static readonly需要注意的一个问 题是,对于一个static readonly的Reference类型,只是被限定不能进行赋值(写)操作而已。而对其成 员的读写仍然是不受限制的。 public static readonly MyClass myins = new MyClass(); … myins.SomeProperty = 10; //正常 myins = new MyClass(); //出错,该对象是只读的 但是,如果上例中的MyClass不是一个class而是一个struct,那么后面的两个语句就都会出错。 private byte red, green, blue; public Color(byte r, byte g, byte b) { red = r; green = g; blue = b; } } 在通俗一点说,const类型赋值必须是脱离系统运行时才能初始化的值(const page p=null正确,const page p= new Page()错误,因为 new Page()需要运行时才初始化)可以使用static readonly(static readonly page p= new Page())

gcorelabs:美国GPU服务器,8张RTX2080Ti,2*Silver-4214/256G内存/1T SSD/

gcorelabs提供美国阿什本数据中心的GPU服务器(显卡服务器),默认给8路RTX2080Ti,服务器网卡支持2*10Gbps(ANX),CPU为双路Silver-4214(24核48线程),256G内存,1Gbps独享带宽仅需150欧元、10bps带宽仅需600欧元,不限流量随便跑吧。 官方网站 :https://gcorelabs.com/hosting/dedicated/gpu/ ...

CloudCone2核KVM美国洛杉矶MC机房机房2.89美元/月,美国洛杉矶MC机房KVM虚拟架构2核1.5G内存1Gbps带宽,国外便宜美国VPS七月特价优惠

近日CloudCone发布了七月的特价便宜优惠VPS云服务器产品,KVM虚拟架构,性价比最高的为2核心1.5G内存1Gbps带宽5TB月流量,2.89美元/月,稳定性还是非常不错的,有需要国外便宜VPS云服务器的朋友可以关注一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2017年的美国服务器提供商,国外实力大厂,自己开...

CloudCone($82/月)15-100M不限流量,洛杉矶CN2 GIA线路服务器

之前分享过很多次CloudCone的信息,主要是VPS主机,其实商家也提供独立服务器租用,同样在洛杉矶MC机房,分为两种线路:普通优化线路及CN2 GIA,今天来分享下商家的CN2 GIA线路独立服务器产品,提供15-100Mbps带宽,不限制流量,可购买额外的DDoS高防IP,最低每月82美元起,支持使用PayPal或者支付宝等付款方式。下面分享几款洛杉矶CN2 GIA线路独立服务器配置信息。配...

const readonly为你推荐
ata考试有人能仔细讲一下ATA考试是什么吗?腾讯搜索引擎我在腾讯视频中上传了一个视频,我在搜索引擎中输入关键字搜视频为什么找不到了?素数算法判断一个数是否为素数的算法公众号付费阅读怎么利用公众号做知识付费?webservice框架WebService新手,请教WebService需要什么包webservice框架如何用webservice 的cxf框架5e5e5e计算器里5.55556e-5是什么意思全局钩子加载全局钩子是什么,每次进入股票软件都说加载全局钩子,是中病毒了吗动画分镜头脚本求份《仙剑奇侠传5》剧情动画分镜头脚本 越多越好特斯拉model3降价小鹏P7和特斯拉Model 3,买哪个更加划算?
韩国虚拟主机 如何注册网站域名 3322免费域名 vir buyvm ion godaddy支付宝 国外空间 申请空间 警告本网站美国保护 阿里校园 息壤代理 in域名 创建邮箱 下载速度测试 注册阿里云邮箱 hdroad ddos攻击器 隐士ddos 主机游戏 更多