null
null 關鍵字是表示不引用任何對象的空引用的文字值。
- null 是引用類型變量的預設值。
- C# 2.0 引入了可為空值的類型,這是可以設定成未定義值的資料類型。可為空值的類型可以表示一般類型的基礎值範圍内的值,在加上一個null值,其相當于通常值類型與null的并集。
可空類型 是 System.Nullable 結構的執行個體。
System.Nullable < T >
// 或簡寫為
T?
// 兩者可以互換,T為值類型
- 可空類型表示可被指派為 null 值的值類型變量。無法建立基于引用類型的可空類型。
- 如果基礎類型的值為 null,請使用 System.Nullable.GetValueOrDefault 屬性傳回該基礎類型所賦的值或預設值,例如 int j = x.GetValueOrDefault();
- 請使用 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
可以作為運算符和辨別符
- 如果類型定義了 true 運算符,它還必須定義 false 運算符。
- 類型不能直接重載條件邏輯運算符(&& 和 ||),但通過重載規則邏輯運算符和 true 與 false 運算符可以達到同樣的效果。
default
default 關鍵字可在 switch 語句或泛型代碼中使用。
- 如果沒有任何 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 ;
}
-
- 在泛型類和泛型方法中産生的一個問題是,在預先未知以下情況時,如何将預設值配置設定給參數化類型 T:
- T 是引用類型還是值類型。
- 如果 T 為值類型,則它是數值還是結構。
-
public class GenericClass < T >
{
public T DoSTH(arg)
{
T temp = default (T);
if (arg != null )
{
temp = arg.Favs;
}
return temp;
}
//
C# 參考之文字關鍵字null、true、false、default 以及where }
給定參數化類型 T 的一個變量 t,隻有當 T 為引用類型時,語句 t = null 才有效;隻有當 T 為數值類型而不是結構時,語句 t = 0 才能正常使用。解決方案是使用 default 關鍵字,此關鍵字對于引用類型會傳回空,對于數值類型會傳回零。對于結構,此關鍵字将傳回初始化為零或空的每個結構成員,具體取決于這些結構是值類型還是引用類型。
Where
where在泛型中的作用是:指定泛型類型可用的方法和屬性。where子句要求泛型類型實作一個借口,或者派生某個基類。