您的位置:首页 > 编程语言 > C#

c# const与readonly 关键字的比较

2015-05-25 11:44 351 查看
C#中,const 与readonly是两个比较有用的关键字。const 与 readonly 定义的数据成员在初始化都不能再改变。

比如定义了
public class MathUtitlity
{
public const double PI = 3.14;
public readonly double E = 2.782;

}

class Program

{
static void Main(string[] args)

{
MathUtitlity math = new MathUtitlity();
math.E = 2.5;//编译错误,不能改变已经初始化的readonly字段
MathUtitlity.PI = 3.1456;//编译错误,不能改变已经初始化的const 字段
}

二者有什么区别呢?

1.定义为const的数据成员,隐式包含了static的含义,而定义为readonly的数据成为没有包含static的含义,比如可以在类级别直接调用const字段,而不能直接调用生命为readonly字段

比如上面可以

Console.WriteLine(MathUtitlity.PI); //使用正确

Console.WriteLine(MathUtitlity.E);//编译错误,不能在类级别直接调用readonly成员,若想直接这样调用,可以加上static 关键字,如下

public static readonly double E = 2.782;//现在可以MathUtitlity.E了

2.const成员在定义时,必须初始化,不能通过构造函数为其初始化。也即是说const成员的值必须的编译时就知道,而不能在运行时赋值。而readonly的成员,如果在定义时没有初始化,那么可以在构造函数中进行初始化。比如

public class MathUtitlity1

{

public readonly double E;

public MathUtitlity1()

{

E = 2.732;

}

public double GetValueE()

{

return E;

}

}

然后可以这样调用

MathUtitlity1 m1 = new MathUtitlity1();

Console.WriteLine(m1.GetValueE());

总之,正确使用这两个关键字,能够充分发挥C#语言带来的威力。

转载自:http://blog.sina.com.cn/s/blog_4b0020f30100v619.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: