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
比如定义了
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
相关文章推荐
- C#中的static、readonly与const的比较
- (转):C#中的readonly与const的比较
- 比较C#中的readonly与const
- C#基础知识系列八const和readonly关键字详细介绍
- C#中的static、readonly与const的比较
- 比较C#的静态常量(const)和动态常量(static和readonly)
- 比较C#中的readonly与const
- 如何使用C#关键字const,readonly,static
- C#中的static、readonly与const的比较
- 比较C#中的readonly与const
- C#中const和readonly字段的比较
- C#中readonly关键字与const关键字的区别
- C#中的static、readonly与const的比较
- 比较C#中的readonly与const
- C#基础知识系列八(const和readonly关键字)
- c#中关键字readonly、const
- C#中两种常量比较--const,readonly
- 比较C#中的readonly与const
- C#中的static、readonly与const的比较
- C#基础知识系列八(const和readonly关键字)