可以為空的型別

2021-04-23 03:24:33 字數 1420 閱讀 8867

來自:http://msdn.microsoft.com/zh-cn/library/aa479317.aspx

可以為空的型別

可以為空的型別實際上就是由於其他原因而非上述原因而使用的泛型。處理資料庫時面臨的挑戰之一就是正確一致地處理支援null的列。在處理字串和其他類(稱為引用型別)時,您只需為**中的某個變數指定nothing/null

'visual basic .net

if dr("username") is dbnull.value then

user.username = nothing

end if

//c#

if (dr["username"] == dbnull.value)

也可以什麼都不做(預設情況下,引用型別為nothing/null)。這對值型別(例如整數布林值小數等)並不完全一樣。您當然也可以為這些值指定nothing/null,但這樣將會指定乙個預設值。如果您只宣告整數,或者為其指定nothing/null,變數的值實際上將為0。這使其很難對映回資料庫:值究竟為0還是null?可以為空的型別允許值型別具有具體的值或者為空,從而解決了這個問題。例如,如果我們要在userid列中支援null值(並不是很符合實際情況),我們會首先將userid欄位和對應的屬性宣告為可以為空的型別:

'visual basic .net

private _userid as nullable(of integer)

public property userid() as nullable(of integer)

getreturn _userid

end get

set(byval value as nullable(of integer))

_userid = value

end set

end property

//c#

private nullableuserid;

public nullableuserid

set

}

然後利用hasvalue屬性判斷是否指定了nothing/null

'visual basic .net

if userid.hasvalue then

return userid.value

else

return dbnull.value

end if

//c#

if (userid.hasvalue) else

外來鍵可以為空

一 關於資料庫的外來鍵,以前我一直以為不允許為空的,今天看到乙個專案中使用了空的資料庫外來鍵,很驚訝,後來才發現是自己以前錯誤了。資料庫外來鍵是可以為空的。不過為空的資料跟與之相關聯的表就沒有關係了。一般不採用。二 按照資料庫理論上說的應該是外來鍵可以為空,為空表示其值還沒有確定 如果不為空,剛必須...

外來鍵可以為空

一 關於資料庫的外來鍵,以前我一直以為不允許為空的,今天看到乙個專案中使用了空的資料庫外來鍵,很驚訝,後來才發現是自己以前錯誤了。資料庫外來鍵是可以為空的。不過為空的資料跟與之相關聯的表就沒有關係了。一般不採用。二 按照資料庫理論上說的應該是外來鍵可以為空,為空表示其值還沒有確定 如果不為空,剛必須...

mysql主鍵可以為空嗎

mysql主鍵不可以為空,因為當建立或者更改表時可以通過定義 primary key 約束來建立主鍵,而乙個表只能有乙個主鍵約束,並且主鍵約束中的列不能是空值,由於主鍵約束確保唯一資料,所以經常來定義標識列。資料庫主鍵是指表中乙個列或者列的組合,其值能夠唯一的標識表中的每乙個行。這樣的一列或者多列成...