NULL和DBNULL的值的區別

2021-05-26 08:10:17 字數 1796 閱讀 9838

c#中,

null

關鍵字是表示不引用任何物件的空引用的文字值。

null

是引用型別變數的預設值。那麼也只有引用型的變數可以為

null

,如果int i=null,

的話,是不可以的,因為

int是值型別的。 在

c#裡面定義字串的時候還可以用

.""和

string.empty.

這兩個都是表示空字串,其中有乙個重點是

string str1=""

和string str2=null

的區別,這樣定義後,

str1

是乙個空字串,空字串是乙個特殊的字串,只不過這個字串的值為空,在記憶體中是有準確的指向的,

string str2=null,

這樣定義後,只是定義了乙個

string

類的引用,

str2

並沒有指向任何地方,在使用前如果不例項化的話,都將報錯。在平時使用的時候,我們連線到資料庫後會經常碰到

dbnull

的錯誤是。

dbnull.value

本身並不是

null

值,而是表示資料庫裡的空值。

dbnull

在.net

是單獨的乙個型別

,該類只能存在唯一的例項

,dbnull.value,dbnull

唯一作用是可以表示資料庫中的字串,數

字,或日期,為什麼可以表示原因是

dotnet

儲存這些資料的類(

datarow

等)都是以

object

的形式來儲存資料的。對於

datarow ,

它的row[column]

返回的值永遠不為

null

,要麼就是具體的為

column

的型別的值

。要麼就是

dbnull 。所以

row[column].tostring()

這個寫法永遠不會在

tostring

那裡發生

nullreferenceexception

。dbnull

實現了iconvertible

。但是,除了

tostring

是正常的外,其他的

to***

都會丟擲不能轉換的錯誤。在資料庫應用程式中,空物件是字段的有效值。該類區分空值(空物件)和未初始化值(

dbnull.value

例項)。例如,表可以包含具有未初始化欄位的記錄。預設情況下,這些未初始化字段具有

dbnull

值。dbnull

是乙個單獨的類,也就是說該類只能存在乙個例項。這個唯一的例項是

dbnull.value

。如果我們從資料庫裡面讀取值的時候就必須考慮到是否有值了。如果不能確定我們就需要做乙個判斷。

convert.isdbnull()

返回有關指定物件是否為

dbnull

型別的指示

,即是用來判斷物件是否為

dbnull

的。其返回值是

true

或flase

。但是為什麼

dbnull

可以表示資料庫中的字串,數字,或日期呢?原因是

dotnet

儲存這些資料的類(

datarow

等)都是以

object

的形式來儲存資料的。

DBNull與Null的區別

null是.net中無效的物件引用。dbnull是乙個類。dbnull.value是它唯一的例項。它指資料庫中資料為空 時,在.net中的值。null表示乙個物件的指向無效,即該物件為空物件。dbnull.value表示乙個物件在資料庫中的值為空,或者說未初始化,dbnull.value物件是指向有...

C 中DBNull和NULL區別

1 dbnull是乙個類。dbnull.value是它唯一的例項。它指資料庫中資料為空 時,在.net中的值。null表示乙個物件的指向無效,即該物件為空物件。對資料庫中的資料進行判斷時,用if sdrct 0 is dbnull 而不是用!代替is。null 是c 中的null,dbnull是資料...

String的isEmpty和null區別

isempty 是jdk封裝的方法,是基於字串物件的,如果沒有分配記憶體,即string s 或string s null 此時字串未分配記憶體,呼叫它的類方法自然報空指標異常 null是判斷字串有沒有被分配記憶體空間,即該字串是否指向乙個記憶體位址,而 已經是乙個有值的字串了,只是它的值比較特殊,...