在C#中可以使用readonly关键词来定义一个只读字段。
只读字段主要有以下几个要点:
- 只读字段可以在定义的同时赋值或者在类的构造方法中给其赋值;
- 除了构造方法外,其他地方不可以修改只读字段的值;
- 只读字段的属性只能有get访问器,不能有set,这是显而易见的。
只读字段与常量的区别:
常量(使用const关键字定义)只能在声明的同时初始化(赋值)。
readonly 字段可以在声明或构造函数中初始化。 因此,根据所使用的构造函数,readonly 字段可能具有不同的值。
只读字段使用举例:
class Student
{
readonly string studentId;
string studentName;
public Student(string sId) //在构造函数中初始化只读字段
{
this.studentId = sId;
}
public Student(string sId, string sName) //另外一个构造函数
{
studentId = sId; studentName = sName;
}
public void PrintInfo() //普通方法
{
Console.WriteLine("学号:{0}", sId);
Console.WriteLine("姓名:{0}", sName);
}
public string StudentId //属性
{
get{ return this.sId;}
set{ sId = value;} //错误,只读字段不能有set
}
}