(1) NULL
null 關鍵字是表示不引用任何對象的Null 參考的文字值。null 是參考型別變數的預設值。那麼也只有引用型的變數可以為NULL,如果 int i=null,的話,是不可以的,因為Int是實值型別的。C#允許使用==或!=來判斷是否為NULL,例如:if(dataGridView2.CurrentRow != null) ...。
(2) DBNULL
DBNull在DotNet是單獨的一個類型,該類只能存在唯一的執行個體,DBNULL.,DBNull唯一作用是可以表示資料庫中的字串,數字,或日期,為什麼可以表示原因是DotNet儲存這些資料的類(DataRow等)都是以 object 的形式來儲存資料的。對於 DataRow , 它的 row[column] 返回的值永遠不為 null , 要麼就是具體的為column 的類型的值 。 要麼就是 DBNull 。 所以 row[column].ToString() 這個寫法永遠不會在ToString那裡發生NullReferenceException。DBNull 實現了 IConvertible 。但是,除了 ToString 是正常的外,其他的ToXXX都會拋出不能轉換的錯誤。
判斷DBNULL的方法:
1、用OleDbDataReader.isDBNull()方法,()內是列序號
2、因為上面方法需要知道列序號,而很多時候我們只知道列名,那麼乾脆用OleDbDataReader[“列名”].toString() != ""來判斷它的值不是空或者DBNull
3、用Convert.isDBNull(判斷對象)方法進行判斷,()內填寫要判斷的運算式
--------------------------------------------------------------------------------------------------------------------------
註:
1、另外,當一個變數(非引用變數)聲明,但是未初始化時,該變數的預設值並非NULL,而為系統設定的預設值,如Bool型的預設值為FALSE。
bool isHere;
messgebox.show(isHere.tostring()); //儘管沒有對isHere賦值,但仍可以使用其預設值,FALSE
2、如果需要使用可以使用null值的int、bool等類型型,可以使用int?、bool?類型。還可以將 == 和 != 運算元用於可為 null 的類型,如:if (x != null) y = x;
樣本1:
1: int? y = 10;
2: if (y != null)
3: {
4: System.Console.WriteLine(y.Value);
5: }
6: else
7: {
8: System.Console.WriteLine("Undefined");
9: }
樣本2:
一個根據bool?值設定comboBox控制項的屬性。CTIsFirstTime為ComboBox控制項名。
1: public bool? IsFirstTime //允許該值為空白
2: {
3: get
4: {
5: if (CTIsFirstTime.SelectedIndex == -1) //當comboBox什麼都沒選時,SelectedIndex值為-1
6: return null;
7: else
8: {
9: if (CTIsFirstTime.SelectedIndex == 0)
10: return true;
11: else
12: return false;
13: }
14: }
15: set
16: {
17: if (value == null)
18: CTIsFirstTime.SelectedIndex = -1;
19: else
20: {
21: if (value == true)
22: CTIsFirstTime.SelectedIndex = 0;
23: else
24: CTIsFirstTime.SelectedIndex = 1;
25: }
26: }
27: }