|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
来吧!老师们!我代表千千万万的asp.net/C#的初学者在这里呼唤着!之前本人对Const与Readonly二者界说的区分不是很懂得,明天在.net实质论(第一卷,大众言语运转库)中看到了这二者的区分,把内里的原话摘抄下去,但愿能对人人有所匡助。
Const界说:
偶然必要一个对字段举行束缚,让它成为常量值,也就是在它的保存期内不克不及被改动。CLR供应了两种将字段声明为常量值的体例。第一种体例所合用的字段,它的常量值是在编译时盘算的——这是效力最高的:字面的静态值仅仅作为一个字面值存储在范例的元数据模块中,在运转时它并非一个真实的字段。正确的说,编译器必要内联任何到字面字段的会见,从实质上讲,它是将字面值嵌进到指令流中。在C#中声明字面字段,必需利用const关头字。这还必要一个初始化表达式,使得它的值可以在编译时盘算出来。上面是这个字段声明的例子:
PublicsealedclassCustomer
{
PublicconstintMax_Customer_AGE=128*365;
}
任何试图修正这个字段的做法都将作为编译时毛病被捕捉。
Readonly界说:
字面字段的初始化值在编译时必需是已知的。关于第二种体例,CLR同意程序员将字段声明为稳定的(immutable),它将一个字段声明为initonly,并静态地初始化。假如将initonly特使用到一个字段,那末,一旦机关函数实行终了,就不同意再对字段值修正。在C#中要指定个initonly字段,就必需利用readonly关头字。你能够经由过程利用初始化表达式来指定初始化值,或复杂地在范例的机关函数办法中赋值。不管哪一种情形,被利用的值都能顾及到程序实行形态的静态方面。上面是一个有关initonly字段的树模例子,它是用C#编写的:
PublicsealedclassCustomer
{
Publicreadonlylongcreated=System.DateTime.Now.Ticks;
}
注重,这段代码静态的天生了created字段的初始化值,它是基于以后工夫的。也就是说,在新的实例机关函数实行终了后,假设created的值被设置,就不克不及再改动它。
上面是网友对Const与Readonly区分的注释,总结的十分好:
1.const字段只能在该字段的声明中初始化。readonly字段能够在声明或机关函数中初始化。因而,依据所利用的机关函数,readonly字段大概具有分歧的值。
2.const字段是编译经常数,而readonly字段可用于运转经常数。
3.const默许就是静态的,而readonly假如设置成静态的就必需显现声明。
4.const关于援用范例的常数,大概的值只能是string和null。readonly能够是任何范例我之所以想学。NET,是因为一直觉的BILLGATES好厉害,希望有一天能去微软,虽然现在还距离遥远,呵呵:) |
|