const與readonly定義的值都不能更改,但它們到底有哪些異同點(diǎn)呢?
Const
²Const是常量的意思,其定義的變量只能讀取不能更改,且只能在定義時(shí)初始化,不能在構(gòu)造函數(shù)與其它屬性與方法中初始化
publicclassConstTest
{
///<summary>
///const定義的變量
///</summary>
publicconstintSUM = 100;
publicConstTest()
{
//錯(cuò)誤!const定義的變量不能在構(gòu)造函數(shù)中初始化
SUM = 100;
}
publicvoidmethod()
{
//錯(cuò)誤!const定義的變量不能在方法中初始化
SUM = 100;
}
}
²Const定義的字段屬于類訪問,類似于靜態(tài)變量,只能通過類名來訪問
//只能通過類名訪問
Console.WriteLine(ConstTest.SUM);
ConstTestt =newConstTest();
//錯(cuò)誤!無法通過實(shí)例對象訪問
Console.WriteLine(t.SUM);
²Const只能定義值類型與字串,若定義引用類型的變量,只能初始化為null
///<summary>
///const定義的變量
///</summary>
publicconstintSUM = 100;
publicconststringCHARACTER_STRING ="We are chinese!我們都是中國人!";
///<summary>
///const定義的引用類型只能初始化為null
///</summary>
publicconstObjectobj =null;
///<summary>
///錯(cuò)誤!const定義的引用類型只能初始化為null
///</summary>
publicconstPersonperson =newPerson();
readonly
readonly是只讀的意思,其定義的變量在運(yùn)行期間也只能讀取不能更改,但與const有以下不同
readonly分為實(shí)例只讀變量與靜態(tài)只讀變量
²實(shí)例只讀變量在定義時(shí)或者實(shí)例構(gòu)造函數(shù)中初始化,通過對象訪問
publicclassReadOnlyTest
{
///<summary>
///定義時(shí)初始化(實(shí)例只讀變量)
///</summary>
publicreadonlyintsum = 0;
publicReadOnlyTest()
{
//實(shí)例只讀變量在實(shí)例構(gòu)造函數(shù)中初始化
sum = 100;
}
}
客戶端訪問形式
新聞熱點(diǎn)
疑難解答
圖片精選