C#基础 [12] 成员常量和只读字段
2013-01-02 22:09
309 查看
一、成员常量
1.常量
常量是在编译时已知并在程序的生存期内不发生更改的不可变值。常量使用 const 修饰符进行声明。只有 C# 内置类型(System.Object 除外)可以声明为 const,用户定义的类型(包括类、结构和数组)不能为 const。常量分为成员常量和本地常量。
2.成员常量
成员常量就是声明在类中的常量,它与前面讲过的本地常量相似,只是作用域不同:本地常量只存在方法中,而成员常量存在于类当中。
下面是一个声明成员常量的示例,MyCalendar类中包含一个成员常量months:
成员常量有如下特征:
1).成员常量使用const关键字声明,并且可以有修饰符(默认为private)。这一点在上例中已经得到了证明。
2).成员常量必须在声明的时候初始化。试图声明一个没有初始化表达式的成员常量将会得到如下图所示的错误提示:
View Code
三、成员常量和只读字段不同
1.const字段只能在声明语句中初始化,而且必须初始化,初始化之后在任何地方都不能改变;readonly字段既可以在声明时初始化,也可以在构造函数中改变它的值:如果是实例只读字段,可以在实例构造函数中改变它的值,如果是静态只读字段,则可以在静态构造函数中改变它的值。
2.const字段的值必须在编译器决定,编译完成之后它的值就被替换为字面量;readonly字段的值可以在运行时决定,可以在不同的构造函数中设置不同的值。
3.const总是像静态字段,在类的外部要通过"类名.常量名"的方式访问;readonly字段既可以是静态字段,也可以是实例字段。
4.const在内存中没有存储位置,而readonly字段在内存中有存储位置。
参考:成员常量:http://msdn.microsoft.com/zh-cn/library/ms173119(VS.100).aspx
只读字段:http://msdn.microsoft.com/zh-cn/library/acdd6hb7(VS.100).aspx
1.常量
常量是在编译时已知并在程序的生存期内不发生更改的不可变值。常量使用 const 修饰符进行声明。只有 C# 内置类型(System.Object 除外)可以声明为 const,用户定义的类型(包括类、结构和数组)不能为 const。常量分为成员常量和本地常量。
2.成员常量
成员常量就是声明在类中的常量,它与前面讲过的本地常量相似,只是作用域不同:本地常量只存在方法中,而成员常量存在于类当中。
下面是一个声明成员常量的示例,MyCalendar类中包含一个成员常量months:
class MyCalendar { // 声明一个成员常量 public const int months = 12; }
成员常量有如下特征:
1).成员常量使用const关键字声明,并且可以有修饰符(默认为private)。这一点在上例中已经得到了证明。
2).成员常量必须在声明的时候初始化。试图声明一个没有初始化表达式的成员常量将会得到如下图所示的错误提示:
View Code
class MyAge { // 声明一个只读字段,在声明的同时初始化 readonly int _year = 1; // 构造函数 MyAge(int year) { // 在构造函数中改变只读字段的值 _year = year; } void ChangeYear() { //_year = 1967; // 在初始化和构造函数之外,不可改变readonly字段的值. } }
三、成员常量和只读字段不同
1.const字段只能在声明语句中初始化,而且必须初始化,初始化之后在任何地方都不能改变;readonly字段既可以在声明时初始化,也可以在构造函数中改变它的值:如果是实例只读字段,可以在实例构造函数中改变它的值,如果是静态只读字段,则可以在静态构造函数中改变它的值。
2.const字段的值必须在编译器决定,编译完成之后它的值就被替换为字面量;readonly字段的值可以在运行时决定,可以在不同的构造函数中设置不同的值。
3.const总是像静态字段,在类的外部要通过"类名.常量名"的方式访问;readonly字段既可以是静态字段,也可以是实例字段。
4.const在内存中没有存储位置,而readonly字段在内存中有存储位置。
参考:成员常量:http://msdn.microsoft.com/zh-cn/library/ms173119(VS.100).aspx
只读字段:http://msdn.microsoft.com/zh-cn/library/acdd6hb7(VS.100).aspx
相关文章推荐
- CLR via C#深解笔记三 - 基元类型、引用类型和值类型 | 类型和成员基础 | 常量和字段
- C# 类型和成员基础以及常量、字段、属性
- C#基础知识梳理系列三:C#类成员:常量、字段、属性
- C#基础之类型和成员基础以及常量、字段、属性
- C#基础之类型和成员基础以及常量、字段、属性
- C# 类型和成员基础以及常量、字段、属性
- c#基础--常量(const),只读字段(readonly)
- C#基础知识梳理系列三:C#类成员:常量、字段、属性
- C#常量数据和只读字段的比较
- 【C#学习】静态字段、常量字段、只读字段、只读属性的相同点和不同点
- c#学习系列之字段(静态,常量,只读)
- 【C#基础语言学习】:const,readonly 常量与只读的区别
- C#实例字段、静态字段、只读字段、常量字段。
- [C#基础]1.成员初始化示字段例(要求你能把这个值跟踪出来)
- C#常量数据与只读字段
- C#2005 .NET3.0高级编程学习笔记————类的函数成员(构造函数,只读字段)
- C#学习笔记——常量、字段以及事件
- 只读字段(readonly)和常量字段
- 12、C#基础整理(结构体)
- C#基础:静态成员和静态类