C#中const和readonly有什么区别? const是常量,一旦声明就不能更改readonly是变量,声明之后,可以在构造器里面初始化其值 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 同意斑竹,就是说readonly就好像是CD-R,const是CD-Rom,哈哈~ readonly修饰符来表示只读域,const来表示不变常量。---只读域只能在初始化--声明初始化或构造器初始化--的过程中赋值,其他地方不能进行对只读域的赋值操作,否则编译器会报错。只读域可以是实例域也可以是静态域。只读域的类型可以是C#语言的任何类型。---const修饰的常量必须在声明的同时赋值,而且要求编译器能够在编译时期计算出这个确定的值。const修饰的常量为静态变量,不能够为对象所获取。const修饰的值的类型也有限制,它只能为下列类型之一(或能够转换为下列类型的):sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, bool, string, enum类型, 或引用类型。---当我们需要一个const的常量时,但它的类型又限制了它不能在编译时期被计算出确定的值来,我们可采取将之声明为static readonly来解决。但两者之间还是有一点细微的差别的。const修饰的常量是在编译时便被计算出确定的值,并代换到引用该常量的每一个地方,而readonly时在运行时才确定的量--只是在初始化后我们不希望它的值再改变。 const修饰的值的类型也有限制,它只能为下列类型之一(或能够转换为下列类型的):sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, bool, string, enum类型, 或引用类型不对吧。类也可以为常量类吧。class a{}const a a1 = new a();这样不行吗? 同意斑竹说的const是常量,一旦声明就不能更改readonly是变量,声明之后,可以在构造器里面初始化其值,并且赋值后就不能在修改其值。 to:guoxiny(狼)类属于此用类型的呀,此用类型都是可以的:引用类型共分四种类型:类,接口,数组,委派。 另外,const是编译期间替换的,而readonly static是运行期间引用的。例如程序集A1引用了A2的一个const变量C,那么编译期间C的值就会被Copy到A1中。在运行时刻A1并不依赖于A2。而readonly static则相反。 新手求 编程一段代码 关于datagridview删除数据的问题? 关于一个简单的事件 多线程 操作数组 示例 一个简单的js怎么写! 谁能给一个C#2.0读取串口数据的思路 急。。急。。c#写XML C# winform网卡及IP处理 有深圳的兄弟姐妹马?给点意见三。 从EXCEL的读入写入数据库中,要拼个INSERT语句, 像各种特殊字符怎么替换? 在深圳工作的朋友,大家都在这签个名及联系方式好吗?大家相互多多交流呀。 诸位休息的大侠,帮帮俺!
就是说readonly就好像是CD-R,const是CD-Rom,哈哈~
const来表示不变常量。
---
只读域只能在初始化--声明初始化或构造器初始化--的过程中赋值,
其他地方不能进行对只读域的赋值操作,否则编译器会报错。
只读域可以是实例域也可以是静态域。
只读域的类型可以是C#语言的任何类型。
---
const修饰的常量必须在声明的同时赋值,
而且要求编译器能够在编译时期计算出这个确定的值。
const修饰的常量为静态变量,
不能够为对象所获取。
const修饰的值的类型也有限制,
它只能为下列类型之一(或能够转换为下列类型的):
sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, bool, string, enum类型, 或引用类型。
---
当我们需要一个const的常量时,
但它的类型又限制了它不能在编译时期被计算出确定的值来,
我们可采取将之声明为static readonly来解决。
但两者之间还是有一点细微的差别的。
const修饰的常量是在编译时便被计算出确定的值,并代换到引用该常量的每一个地方,
而readonly时在运行时才确定的量--只是在初始化后我们不希望它的值再改变。
它只能为下列类型之一(或能够转换为下列类型的):
sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, bool, string, enum类型, 或引用类型不对吧。类也可以为常量类吧。class a
{}const a a1 = new a();
这样不行吗?
const是常量,一旦声明就不能更改readonly是变量,声明之后,可以在构造器里面初始化其值,
并且赋值后就不能在修改其值。
类属于此用类型的呀,此用类型都是可以的:引用类型共分四种类型:
类,接口,数组,委派。
例如程序集A1引用了A2的一个const变量C,那么编译期间C的值就会被Copy到A1中。在运行时刻A1并不依赖于A2。而readonly static则相反。