null
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;
}
//
}
給定參數化型別 T 的一個變數 t,只有當 T 為參考型別時,語句 t = null 才有效;只有當 T 為數實值型別而不是結構時,語句 t = 0 才能正常使用。解決方案是使用 default 關鍵字,此關鍵字對於參考型別會返回空,對於數實值型別會返回零。對於結構,此關鍵字將返回初始化為零或空的每個結構成員,具體取決於這些結構是實值型別還是參考型別。
本篇內容參考MSDN文檔。 |
本Blog中所有內容皆以“現狀”提供且沒有任何擔保,同時也沒有授予任何權利。 This posting is provided "AS IS" with no warranties, and confers no rights. |