C# 參考之文字關鍵字null、true、false以及default

來源:互聯網
上載者:User

null

null 關鍵字是表示不引用任何對象的Null 參考的文字值。

  1. null 是參考型別變數的預設值。
  2. C# 2.0 引入了可為空白值的類型,這是可以設定成未定義值的資料類型。可為空白值的類型可以表示一般類型的基礎值範圍內的值,在加上一個null值,其相當於通常實值型別與null的並集。

可空類型 是 System.Nullable 結構的執行個體。

System.Nullable<T>
// 或簡寫為
T?
// 兩者可以互換,T為實值型別
  1. 可空類型表示可被賦值為 null 值的實值型別變數。無法建立基於參考型別的可空類型。
  2. 如果基礎類型的值為 null,請使用 System.Nullable.GetValueOrDefault 屬性返回該基礎類型所賦的值或預設值,例如 int j = x.GetValueOrDefault();
  3. 請使用 HasValue 和 Value 唯讀屬性測試是否為空白和檢索值,例如 if(x.HasValue) j = x.Value;
      • 如果此變數包含值,則 HasValue 屬性返回 True;或者,如果此變數的值為空白,則返回 False。

      • 如果已賦值,則 Value 屬性返回該值,否則將引發 System.InvalidOperationException。

      • 可空類型變數的預設值將 HasValue 設定為 false。未定義 Value。

  4. 使用 ?? 運算子分配預設值,當前值為空白的可空類型被賦值給非空類型時將應用該預設值,如int? x = null; int y = x ?? -1;。(例如在相簿管理中,出現為上傳的空映像,則可以用這個算式為其賦予一個default的圖片)

  5. 不允許使用嵌套的可空類型。將不編譯下面一行:Nullable<Nullable<int>> n;

  6. true & false

    可以作為運算子和標識符

    1. 如果類型定義了 true 運算子,它還必須定義 false 運算子。
    2. 類型不能直接重載條件邏輯運算子(&& 和 ||),但通過重載規則邏輯運算子和 true 與 false 運算子可以達到同樣的效果。
    default

    default 關鍵字可在 switch 語句或泛型代碼中使用。

    1. 如果沒有任何 case 運算式與開關值匹配,則控制傳遞給跟在可選 default 標籤後的語句。如果沒有 default 標籤,則控制傳遞到 switch 以外。

      • int id = int32.Parse(Console.ReadLine());
        switch (id)
        {
            case 1: 
                Console.WriteLine("Lee");
                break;
            case 2:
                Console.WriteLine("Tang");
                break;
            default:
                Console.WriteLine("Sorry, no one match this ID!");
                break;
        }
    2. 在泛型類和泛型方法中產生的一個問題是,在預先未知以下情況時,如何將預設值分配給參數化型別 T:
      • T 是參考型別還是實值型別。

      • 如果 T 為實值型別,則它是數值還是結構。

      • public class GenericClass<T>
        {
            public T DoSTH(arg)
            {
                T temp = default(T);

                if (arg != null)
                {
                    temp = arg.Favs;
                }
                return temp;
            }
            //
        }

        給定參數化型別 T 的一個變數 t,只有當 T 為參考型別時,語句 t = null 才有效;只有當 T 為數實值型別而不是結構時,語句 t = 0 才能正常使用。解決方案是使用 default 關鍵字,此關鍵字對於參考型別會返回空,對於數實值型別會返回零。對於結構,此關鍵字將返回初始化為零或空的每個結構成員,具體取決於這些結構是實值型別還是參考型別。

     

    本篇內容參考MSDN文檔。

    本Blog中所有內容皆以“現狀”提供且沒有任何擔保,同時也沒有授予任何權利。
    This posting is provided "AS IS" with no warranties, and confers no rights.

    相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.