摘要:[C#] 可為 NULL 的型別
在 C# 中的變數中,如整數、浮點數、佈林值、日期等型別不能設定其值為 null,就是說這些資料型別,
在初始化時必須有明確的值存在;如果沒有宣告初值,則系統會自動依其型別賦予初值。
例如:
//類別層級變數,會預設初始值 private int h; //宣告後 h = 0 private void MethodA(){ //區域變數需指定初始值 int iValue = 0; }
話說回來,既然是值型別,為何還要將之設為 null 呢?
大都與資料表中欄位設定有關,資料欄位可以有資料,也可以不指定任何資料,此時該欄位沒有任何值。
例如:婚姻狀況的欄位,可以明確的指定「是」或「否」,但是如果真的沒有填寫,該欄位應以 null 表示。
所以,如何指定值型別為 null 值?參考以下:
int? n;//宣告變數 n = 8; //可以指定為數值 n = null; //也可指定為 null
指定為 null 的變數型別,其實是一個特殊的型別,它和其他的資料型別是不相同的,因此不可以將其指派給
其他不相同的資料型別,否則會產生錯誤。
例如:
int? n1; int n2 = 1; n1 = null; n2 = n1; //錯誤
Link
補充:
1.
class UsingNullable { static void Main(string[] args) { UsingNullable theUsingNullable = new UsingNullable(); NullableValue theNullableValue = new NullableValue(); Console.WriteLine( "intNullable1 = " + theUsingNullable.getNullableValue(theNullableValue.intNullable1) ) ; Console.WriteLine( "intNullable2 = " + theUsingNullable.getNullableValue(theNullableValue.intNullable2) ); Console.WriteLine( "dblNullable1 = " + theUsingNullable.getNullableValue(theNullableValue.dblNullable1) ); Console.WriteLine( "dblNullable2 = " + theUsingNullable.getNullableValue(theNullableValue.dblNullable2) ); Console.ReadLine(); } string getNullableValue(int? pValue) { if (pValue.HasValue == true) return pValue.Value.ToString(); else return "null"; } string getNullableValue(double? pValue) { if (pValue.HasValue == true) return pValue.Value.ToString(); else return "null"; } } class NullableValue { public int? intNullable1 = 100; public Nullable<int> intNullable2 = null; public double? dblNullable1 = null; public Nullable<double> dblNullable2 = 123.456; }
輸出結果
三小俠 小弟獻醜,歡迎指教