请问c#中修饰一个变用量用readonly与用const会有什么区别呢? 请问c#中修饰一个变用量用readonly与用const会有什么区别呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 C#引入了readonly修饰符来表示只读域,const来表示不变常量。顾名思义对只读域不能进行写操作,不变常量不能被修改,这两者到底有什么区别呢?只读域只能在初始化--声明初始化或构造器初始化--的过程中赋值,其他地方不能进行对只读域的赋值操作,否则编译器会报错。只读域可以是实例域也可以是静态域。只读域的类型可以是C#语言的任何类型。但const修饰的常量必须在声明的同时赋值,而且要求编译器能够在编译时期计算出这个确定的值。const修饰的常量为静态变量,不能够为对象所获取。const修饰的值的类型也有限制,它只能为下列类型之一(或能够转换为下列类型的):sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, bool, string, enum类型, 或引用类型。值得注意的是这里的引用类型,由于除去string类型外,所有的类型出去null值以外在编译时期都不能由编译器计算出他们的确切的值,所以我们能够声明为const的引用类型只能为string或值为null的其他引用类型。显然当我们声明一个null的常量时,我们已经失去了声明的意义 --这也可以说是C#设计的尴尬之处!这就是说,当我们需要一个const的常量时,但它的类型又限制了它不能在编译时期被计算出确定的值来,我们可采取将之声明为static readonly来解决。 常量一旦申明就要初始化。且总是静态的。readonly可以说是特殊的一种常量,不必申明后马上初始化,但是最多只能在构造函数中初始化,但这比常量更方便,且可以自己定义是静态还是非静态。一般推荐勇readonly http://www.ltesting.net/html/21/n-55121.html http://blog.csdn.net/appoFeng/archive/2008/02/16/2099971.aspx MSDN说的很清楚了:readonly 关键字与 const 关键字不同。const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段为编译时常数,而 readonly 字段可用于运行时常数。 在C#写的代码中,那一块算做是只读域,多大一块代码算是一个域,说readonly修饰符来表示只读域,是扯蛋的解释 http://www.cnblogs.com/panjun-donet/articles/1127680.html 高手进来帮忙解决下,谢谢了先 超灵异显现 c#如何调用API 一个比较幼稚的问题 高手们关注:关于POCSAG编码的问题!!!(分已经在另外的贴子里了,不够再向我要就行!) 将程序分层的疑惑。。。!!!100分!!!(现在都这么小气了?100分也要做广告-_-!) 关于EXCEL的导入问题。。。请那位高手帮个帮了 Js如何调用XML文件 求大神 手机上开发的程序怎么检测手机正在上传或下载数据?答对了给100分!!!! 在线等候,急用!!!请大侠指点! C#中数据库的问题~~~~~ Help!! C# 如何判断进程是拥有界面运行还是在后台运行?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货