顧名思義,只讀字段,就是說在程序運(yùn)行過程中,程序中可以讀取這個(gè)字段的值,而不能修改它的值。在C#中可以使用readonly關(guān)鍵詞來定義一個(gè)只讀字段。
在C#中使用只讀字段主要有以下幾個(gè)要點(diǎn):
(1)只讀字段可以在定義的同時(shí)賦值或者在類的構(gòu)造方法中給其賦值;
(2)除了構(gòu)造方法外,其他地方不可以修改只讀字段的值;
(3)只讀字段的屬性只能有g(shù)et訪問器,不能有set,這是顯而易見的;
只讀字段與常量的區(qū)別
常量(使用const關(guān)鍵字定義)只能在聲明的同時(shí)初始化(賦值)。
readonly 字段可以在聲明或構(gòu)造函數(shù)中初始化。 因此,根據(jù)所使用的構(gòu)造函數(shù),readonly 字段可能具有不同的值。

只讀字段使用舉例:
class Student
{
readonly string studentId;
string studentName;
public Student(string sId) //在構(gòu)造函數(shù)中初始化只讀字段
{
this.studentId = sId;
}
public Student(string sId, string sName) //另外一個(gè)構(gòu)造函數(shù)
{
studentId = sId; studentName = sName;
}
public void PrintInfo() //普通方法
{
Console.WriteLine("學(xué)號(hào):{0}", sId);
Console.WriteLine("姓名:{0}", sName);
}
public string StudentId //屬性
{
get{ return this.sId;}
set{ sId = value;} //錯(cuò)誤,只讀字段不能有set
}
}
從上面的例子中可以看出,在不同的實(shí)例中只讀字段的值可以不同。也可以在多個(gè)構(gòu)造函數(shù)中設(shè)置只讀字段的值。
新聞熱點(diǎn)
疑難解答