C#中readonly与const区别
2014-04-24 10:06
447 查看
1.const、readonly和static readonly定义的常量,指定初始值后(包括在构造函数内指定的初始值) 将不可更改,可读不可写;
2.const定义时必 须指定初始值,而readonly定义时可以不进行初始化(MS建议在定义时初始值),同时也可以在构造函数内指定初始值,
并以构造函数内指定的值为准;
3.const和static readonly定义的常量是静态的,只能由类直接访问;而readonly定义的常量是非静态 的,只能由实例对象访问;
4.static readonly常量,如果在构造函数内指定初始值,则必须是静态无参构造函数;
5.const是编译时常量,readonly是运行时常量;cosnt较高效,readonly较灵活。在应用上以static readonly代替const,以平衡const在灵活性上的不足
readonly 关键字与 const 关键字不同。
1. const 字段只能在该字段的声明中初始化。
readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。
2. const 字段是编译时常数,而 readonly 字段可用于运行时常数。
3. const 默认就是静态的,而 readonly 如果设置成静态的就必须显示声明。
4.const 对于引用类型的常数,可能的值只能是 string 和 null 。
readonly 可以是任何类型
const 的概念就是一个包含不能修改的值的变量。
常数表达式是在编译 时可被完全计算的表达式。因此不能从一个变量中提取的值来初始化常量。
如果 const int a = b+1; b 是一个变量,显然不能再编译时就计算出结果,所以常量是不可 以用变量来初始化的。
readonly 允许把一个字段设置成 常量,但可以执行一些运算,可以确定它的初始值。
因为 readonly 是在计算时执行的,当然它可以用某些变量初始化。
readonly 是实例成员,所以不同的实例可以有不同的常量值,这使readonly更灵活。
2.const定义时必 须指定初始值,而readonly定义时可以不进行初始化(MS建议在定义时初始值),同时也可以在构造函数内指定初始值,
并以构造函数内指定的值为准;
3.const和static readonly定义的常量是静态的,只能由类直接访问;而readonly定义的常量是非静态 的,只能由实例对象访问;
4.static readonly常量,如果在构造函数内指定初始值,则必须是静态无参构造函数;
5.const是编译时常量,readonly是运行时常量;cosnt较高效,readonly较灵活。在应用上以static readonly代替const,以平衡const在灵活性上的不足
readonly 关键字与 const 关键字不同。
1. const 字段只能在该字段的声明中初始化。
readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。
2. const 字段是编译时常数,而 readonly 字段可用于运行时常数。
3. const 默认就是静态的,而 readonly 如果设置成静态的就必须显示声明。
4.const 对于引用类型的常数,可能的值只能是 string 和 null 。
readonly 可以是任何类型
const 的概念就是一个包含不能修改的值的变量。
常数表达式是在编译 时可被完全计算的表达式。因此不能从一个变量中提取的值来初始化常量。
如果 const int a = b+1; b 是一个变量,显然不能再编译时就计算出结果,所以常量是不可 以用变量来初始化的。
readonly 允许把一个字段设置成 常量,但可以执行一些运算,可以确定它的初始值。
因为 readonly 是在计算时执行的,当然它可以用某些变量初始化。
readonly 是实例成员,所以不同的实例可以有不同的常量值,这使readonly更灵活。
readonly 关键字与 const 关键字不同。 const 字段只能在该字段的声明中初始化。 readonly 字段可以在声明或构造函数中初始化。 因此,根据所使用的构造函数,readonly 字段可能具有不同的值。 另外,const 字段为编译时常数,而 readonly 字段可用于运行时常数,如下例所示: |
public static readonly uint timeStamp = (uint)DateTime.Now.Ticks;
public class ReadOnlyTest { class SampleClass { public int x; // Initialize a readonly field public readonly int y = 25; public readonly int z; public SampleClass() { // Initialize a readonly instance field z = 24; } public SampleClass(int p1, int p2, int p3) { x = p1; y = p2; z = p3; } } static void Main() { SampleClass p1 = new SampleClass(11, 21, 32); // OK Console.WriteLine("p1: x={0}, y={1}, z={2}", p1.x, p1.y, p1.z); SampleClass p2 = new SampleClass(); p2.x = 55; // OK Console.WriteLine("p2: x={0}, y={1}, z={2}", p2.x, p2.y, p2.z); } } /* Output: p1: x=11, y=21, z=32 p2: x=55, y=25, z=24 */
相关文章推荐
- C#中const和readonly的区别
- 【心得】在C#中使用静态变量const和动态变量readonly的区别
- C#中const和readonly的区别
- C#试题(三)Const和Readonly的区别
- 编写高质量代码改善C#程序的157个建议——建议6: 区别readonly和const的使用方法
- C# readonly与const的区别
- C#中readonly关键字与const关键字的区别
- C#中readonly与const的区别
- c#中const与readonly的区别
- C# const和readonly的区别(收藏于网络)
- C#中readonly关键字与const关键字的区别(转)
- C#中 const 和 readonly 的区别
- const和readonly区别 (C# .net)
- C#: const与readonly的用法和区别解析
- C# 中使用readonly关键字和const的区别
- C#中const和readonly的区别
- C#中const和readonly的区别
- 深入理解c#中的const 和readonly的区别滴呀;
- 黑马程序员之C#学习笔记:break和continue的区别const与readonly的区别form与control的区别
- C#中 const 和 readonly 的区别