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

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。

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

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

 


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 關鍵字,此關鍵字對於引用類型會返回空,對於數值類型會返回零。對於結構,此關鍵字將返回初始化爲零或空的每個結構成員,具體取決於這些結構是值類型還是引用類型。  

 

Where

      where在泛型中的作用是:指定泛型類型可用的方法和屬性。where子句要求泛型類型實現一個藉口,或者派生某個基類。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章