C#中const,readonly和static關(guān)鍵字的用法介紹
如果有一個值不太會變化,我們經(jīng)常使用const和readonly,這2者有何不同呢?有時候,我們也會在readonly之前加上關(guān)鍵字static,這又意味著什么呢?
const
- const默認(rèn)是靜態(tài)的,可以通過"類名.字段名"來訪問。
- const變量只能在聲明的時候賦值,不能在構(gòu)造函數(shù)中為const類型變量賦值。
- 一旦程序集被編譯,const變量會被寫進(jìn)程序集的IL代碼中。如果想修改const變量值,必須在修改值后再重新生成程序集。
- const是編譯期變量
public class Test
{
public const int defaultValue = 10;
//這里報錯:因?yàn)椴荒茉跇?gòu)造函數(shù)內(nèi)為const變量賦值
public Test()
{
defaultValue = 1000;
}
}以上,
可以通過Test.defaultValue來獲取變量defaultValue的值。
在Test構(gòu)造中為defaultValue賦值會報錯,只能在聲明defaultValue的時候賦初值。
readonly
readonly默認(rèn)是實(shí)例變量,只能通過"對象實(shí)例.字段名"來訪問。
readonly變量可以在聲明的時候或在構(gòu)造函數(shù)內(nèi)賦值。
如果想改變readonly變量值,只需要在聲明變量或構(gòu)造函數(shù)內(nèi)修改,不需要重新生成程序集。
readonly是運(yùn)行時變量
class Program
{
static void Main(string[] args)
{
Test test = new Test();
Console.WriteLine(test.rdValue);
Console.ReadKey();
}
}
public class Test
{
public readonly int rdValue;
public Test()
{
this.rdValue = 100;
}
//這里報錯:因?yàn)橹荒茉诼暶髯兞炕驑?gòu)造函數(shù)內(nèi)對readonly變量賦值
public int RDVaue
{
get { return rdValue; }
set { rdValue = value; }
}
}以上,
通過Test類的實(shí)例來獲取readonly變量值,test.rdValue。
在RDValue屬性中為readonly變量rdValue賦值會報錯。
如果在readonly之前加上static關(guān)鍵字:
此時的readonly變量只能在聲明變量的時候賦值
此時的readonly變量可以通過"類名.字段名"來訪問
此時的readonly變量變成了編譯期變量
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Test.rdValue);
Console.ReadKey();
}
}
public class Test
{
public static readonly int rdValue=100;
}以上,
只能在聲明static readonly變量rdValue的時候賦值。
通過Test.rdValue來訪問static readonly變量。
總結(jié):const是靜態(tài)的、編譯期變量,只能在聲明變量的時候賦值;readonly是運(yùn)行時變量,可以在聲明的時候或在構(gòu)造函數(shù)內(nèi)賦值。當(dāng)在readonly前加上關(guān)鍵字static,變成static readonly后,此時的static readonly變量就變成了靜態(tài)的、編譯期變量。
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
C#值類型、引用類型中的Equals和==的區(qū)別淺析
這篇文章主要介紹了C#值類型、引用類型中的Equals和==的區(qū)別淺析,本文分別對C#值類型和引用類型中的Equals和==做了講解和給出了實(shí)例,需要的朋友可以參考下2015-01-01
詳解C#如何在不同工作簿之間復(fù)制選定單元格區(qū)域
處理Excel文檔時,我們經(jīng)常需要將數(shù)據(jù)整合到一個工作表以便于我們進(jìn)行管理或數(shù)據(jù)對比。本文將演示如何通過編程方式將選定的單元格區(qū)域從一個工作簿復(fù)制到另一個工作簿2023-02-02

