欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# 中const,readonly,static的使用小結(jié)

 更新時(shí)間:2021年01月25日 11:50:59   作者:一線碼農(nóng)  
這篇文章主要介紹了C# 中使用const,readonly,static的示例,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下

平時(shí)在開發(fā)時(shí)經(jīng)常會(huì)用到 const,readonly,static 關(guān)鍵字,可以肯定這些關(guān)鍵詞是完全不同的概念,但有時(shí)候他們?cè)谟梅ㄉ虾芟嗨埔灾劣谠趫鼍爸胁恢肋x擇哪一個(gè),這篇文章我們就來討論 C# 中的 const,static 和 readonly 關(guān)鍵詞,放在一起比較一下看看如何選擇。

理解 const

const 常用來定義一個(gè)常量,什么意思呢?就是這個(gè)常量在你程序的生命周期內(nèi)都不會(huì)被改變,因此,必須在聲明常量時(shí)為其賦值,從技術(shù)角度上來說:這個(gè)常量值又被稱為 編譯時(shí) 值,用 const 定義的變量又被稱為 編譯時(shí) 常量,值得注意的是: 這個(gè)常量是不可變的,也就是一旦被定義好之后不可以對(duì)其進(jìn)行修改。

下面的代碼片段展示了如何使用 const 去定義這個(gè) 編譯時(shí) 常量。

const string connectionString = "Specify your database connection string here.";

一定要記住,常量必須在定義的時(shí)候給它賦值,同時(shí)也要記住不可以用 const 定義 object 類型,因?yàn)樗恢С?C# 的基元類型,比如:ints, floats, chars, booleans 和 strings,接下來通過一個(gè)例子來了解以下為啥不能用 object,考慮下面的 Author 類。

 public class Author
 {
  public int Id { get; set; }
  public string FirstName { get; set; }
  public string LastName { get; set; }
  public string Address { get; set; }
 }

如果用 const 將 Author 定義為常量的話,編譯器肯定是不同意的,如下圖:

理解 readonly

只讀關(guān)鍵詞 readonly 常用于將一個(gè)變量或者一個(gè)對(duì)象設(shè)置為只讀,意味著這個(gè)變量或者對(duì)象只能在 類作用域 或者 構(gòu)造函數(shù) 中被第一次賦值,一旦被賦值后,你就不能通過任何方法對(duì)其修改,除了構(gòu)造函數(shù),接下來看一個(gè)例子,考慮下面的 DbManager 類。

 public class DbManager
 {
  public readonly string connectionString ="Specify your database connection string here.";
  
  public DbManager()
  {
   connectionString = "You can reassign a value here.";
  }
  
  public void ReAssign()
  {
   connectionString = "This is not allowed";
  }
 }

上面的代碼會(huì)編譯報(bào)錯(cuò),錯(cuò)誤信息如下:

理解 static

static 關(guān)鍵詞可用于 變量,方法,對(duì)象。不過值得注意的是: 類中的 static 成員只歸屬于類,而不是類實(shí)例,換句話說,可以直接使用類名來訪問靜態(tài)屬性或者靜態(tài)方法,而不是通過類實(shí)例訪問,接下來考慮一下 Utility 類。

 public class Utility
 {
  public static void SomeMethod()
  {
   //Write your code here
  }
 }

你不可以通過 類實(shí)例 去調(diào)用,否則編譯器是不會(huì)放行的,如下圖:

正確的做法如下:

Utility.SomeMethod();

同樣的規(guī)則也適用于 類中的屬性和字段,要想引用類中的靜態(tài)成員,參考如下語法:

ClassName.Member;

或者

ClassName.Member();

構(gòu)造函數(shù)也可以是靜態(tài)的,它通常用于初始化類中的靜態(tài)成員,但要注意靜態(tài)構(gòu)造函數(shù)中不接受任何參數(shù)。

總結(jié)

使用 const,readonly,static 的一些經(jīng)驗(yàn)法則如下:

const

如果變量在應(yīng)用程序的生命周期內(nèi)不會(huì)被改變,請(qǐng)用 const。

readonly

如果你不確定這個(gè)變量后期是否要被修改,但又不希望其他的類碰它,請(qǐng)用 readonly。

static

如果你希望類成員是屬于類型而不是類型的實(shí)例,請(qǐng)用 static。

譯文鏈接:https://www.infoworld.com/art...

以上就是C# 中使用const,readonly,static的示例的詳細(xì)內(nèi)容,更多關(guān)于C# 中使用const,readonly,static的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 如何在C#中使用指針

    如何在C#中使用指針

    這篇文章主要介紹了如何在C#中使用指針,文中代碼簡單易懂,幫助大家更好的工作和學(xué)習(xí),感興趣的朋友快來了解下
    2020-06-06
  • 提高C# StringBuilder操作性能優(yōu)化的方法

    提高C# StringBuilder操作性能優(yōu)化的方法

    本篇文章主要介紹使用C# StringBuilder 的項(xiàng)目實(shí)踐,用于減少內(nèi)存分配,提高字符串操作的性能。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • C#獲取兩個(gè)數(shù)的最大公約數(shù)和最小公倍數(shù)示例

    C#獲取兩個(gè)數(shù)的最大公約數(shù)和最小公倍數(shù)示例

    本文介紹了使用C#獲取兩個(gè)數(shù)的最大公約數(shù)和最小公倍數(shù)的示例,大家參考使用吧
    2014-01-01
  • C#實(shí)現(xiàn)多線程的Web代理服務(wù)器實(shí)例

    C#實(shí)現(xiàn)多線程的Web代理服務(wù)器實(shí)例

    這篇文章主要介紹了C#實(shí)現(xiàn)多線程的Web代理服務(wù)器,涉及C#多線程代理服務(wù)器的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • c#實(shí)現(xiàn)最簡潔的快速排序(你絕對(duì)可以看懂)

    c#實(shí)現(xiàn)最簡潔的快速排序(你絕對(duì)可以看懂)

    這篇文章主要給大家介紹了關(guān)于利用c#實(shí)現(xiàn)如何最簡潔的快速排序,實(shí)現(xiàn)的方法你絕對(duì)可以看懂,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用c#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • C#編程自學(xué)之?dāng)?shù)據(jù)類型和變量二

    C#編程自學(xué)之?dāng)?shù)據(jù)類型和變量二

    這篇文章繼續(xù)介紹了C#數(shù)據(jù)類型和變量,是對(duì)上一篇文章的補(bǔ)充,希望對(duì)大家的學(xué)習(xí)有所幫助。
    2015-10-10
  • 關(guān)于javascript冒泡與默認(rèn)事件的使用詳解

    關(guān)于javascript冒泡與默認(rèn)事件的使用詳解

    本篇文章是對(duì)javascript中冒泡與默認(rèn)事件的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C#計(jì)算矩陣的逆矩陣方法實(shí)例分析

    C#計(jì)算矩陣的逆矩陣方法實(shí)例分析

    這篇文章主要介紹了C#計(jì)算矩陣的逆矩陣方法,較為詳細(xì)的分析了逆矩陣的計(jì)算原理與相關(guān)的C#實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • C#事務(wù)處理(Execute Transaction)實(shí)例解析

    C#事務(wù)處理(Execute Transaction)實(shí)例解析

    這篇文章主要介紹了C#事務(wù)處理(Execute Transaction)實(shí)例解析,對(duì)于理解和學(xué)習(xí)事務(wù)處理有一定的幫助,需要的朋友可以參考下
    2014-08-08
  • C#多態(tài)詳解

    C#多態(tài)詳解

    這篇文章主要介紹了C#中的多態(tài),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10

最新評(píng)論