C#中問號(?)的用法

來源:互聯網
上載者:User

看別人的代碼,C#中有個奇怪的問號:

public DateTime? StatusDateTime = null;

腦子便也出現個問號,這是什麼意思呢?網上搜下,總結如下:

1. 可空類型修飾符(?):

    參考型別可以使用Null 參考表示一個不存在的值,而實值型別通常不能表示為空白。

    例如:string str=null; 是正確的,int i=null; 編譯器就會報錯。

    為了使實值型別也可為空白,就可以使用可空類型,即用可空類型修飾符"?"來表示,表現形式為"T?"

    例如:int? 表示可空的整形,DateTime? 表示可為空白的時間。

    T? 其實是System.Nullable<T>(泛型結構)的縮寫形式,也就意味著當你用到T?時編譯器編譯  時會把T?編譯成System.Nullable<T>的形式。

   例如:int?,編譯後便是System.Nullable<int>的形式。

2. 三元(運算子)運算式(?:):

   例如:x?y:z 表示如果運算式x為true,則返回y;如果x為false,則返回z,是省略if{}else{}的簡單形式。

3. 空合并運算子(??):

    用於定義可空類型和參考型別的預設值。如果此運算子的左運算元不為null,則此運算子將返回左運算元,否則返回右運算元。

    例如:a??b 當a為null時則返回b,a不為null時則返回a本身。

    空合并運算子為右結合運算子,即操作時從右向左進行組合的。如,“a??b??c”的形式按“a??(b??c)”計算。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.