日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#中的DBNull、Null、String.Empty和“”

發(fā)布時間:2023/12/20 C# 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#中的DBNull、Null、String.Empty和“” 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

null可賦值任何變量,將變量置為空?
DBNull只用于DataRow對象,表示數(shù)據(jù)庫中的空值?
String.Empty是0長度字串?
Convert.IsDBNull判斷是否為DBNull

?

DBNull.Value與Null的區(qū)別

Null是.net中無效的對象引用。

DBNull是一個類。DBNull.Value是它唯一的實(shí)例。它指數(shù)據(jù)庫中數(shù)據(jù)為空(<NULL>)時,在.net中的值。

以下是我測試的一個例子。

例:表tbl_Student

id????name????address

1????? jim????? <NULL>

將上述表數(shù)據(jù)填充到.net 的名為dt的DataTable中。

dt.Rows[0]["address"]不等于null但是等于DBNull.Value.

可見null表示一個對象的指向無效,即該對象為空對象。

DBNull.Value表示一個對象在數(shù)據(jù)庫中的值為空,或者說未初始化,DBNull.Value對象是指向有效的對象。

另外注:對上述dt,如果有如下代碼:dt.Rows[0][100]。結(jié)果如何?

并非想象中的null。而是出現(xiàn)異常:索引超出數(shù)組界限。

對于普通的引用類型變量,如果指向?qū)ο鬄閚ull,則會提示:未將對象引用設(shè)置到對象實(shí)例。但對于使用dt.Rows[i][j]取值,如果第i行存在但i行沒有j列,則直接出現(xiàn)異常,不會返回一個指向null的dt.Rows[i][j]。

所以:使用(dt.Rows[0][100]!=null)判斷沒有意義。為避免0行的100列不存在。可以判斷(dt.Rows[0].ItemArray.Length>100).

string.Empty不分配存儲空間

????? ""分配一個長度為空的存儲空間???

????? 所以一般用string.Empty

為了以后跨平臺,還是用string.empty

在 C# 中,大多數(shù)情況下 "" 和 string.Empty 可以互換使用。比如:

string s = "";

string s2 = string.Empty;

if (s == string.Empty)?{

?

判定為空字符串的幾種寫法,按照性能從高到低的順序是:

s.Length == 0????? 優(yōu)于 s == string.Empty????? 優(yōu)于 s == ""

您關(guān)于String.Empty和Null的問題是這樣的,這兩個都是表示空字符串,其中有一個重點(diǎn)是string str1= String.Empty和 string str2=null 的區(qū)別,這樣定義后,str1是一個空字符串,空字符串是一個特殊的字符串,只不過這個字符串的值為空,在內(nèi)存中是有準(zhǔn)確的指向的,string str2=null,這樣定義后,只是定義了一個string 類的引用,str2并沒有指向任何地方,在使用前如果不實(shí)例化的話,都將報錯。textBox1.Text的值為零長度字符串 ""。?

null是C#關(guān)鍵字,是表示不引用任何對象的空引用的文字值。null 是引用類型變量的默認(rèn)值。?
DBNULL表示類,表示空值.?
該類用于指示不存在某個已知值(通常在數(shù)據(jù)庫應(yīng)用程序中)。?
在數(shù)據(jù)庫應(yīng)用程序中,空對象是字段的有效值。該類區(qū)分空值(空對象)和未初始化值(DBNull.Value 實(shí)例)。例如,表可以包含具有未初始化字段的記錄。默認(rèn)情況下,這些未初始化字段具有 DBNull 值。?
String.Empty表示空字符串,該屬性為只讀.?
Convert.IsDBNULL(object value)是一個方法,就是判斷參數(shù)對象是否為DBNULL對象類型,如果是返回true,不是返回false


C#中空值(null)與空字符串("")的區(qū)別

問:

string aa = String.Empty;
string aa = null;
string aa = "";
有什么區(qū)別?


答1:

一、
string aa;

string aa = null;
一樣。
他么都是聲明了一個sting對象的名字aa(可以理解為C\C++中指向sting類型變量的指針,或者說引用),但是并沒有賦予aa一個與之對應(yīng)的實(shí)際對象(沒有內(nèi)存分配)。所以aa在這里什么都不是,等待分配。

二、
string aa = String.Empty;

string aa = "";
以及
string aa;
aa="";
是一樣的。
aa被聲明為一個空的字符串。
實(shí)際上是aa在這里代表了一個內(nèi)容為空字符串的字符串對象。

三、
究竟前面兩種情況在使用中有什么不一樣呢?
前者由于沒有指向具體對象,所以在沒有將它指向具體對象之前,不能用“.”運(yùn)算符引用string類對象的很多方法和屬性。
但是后者就可以。

?

答2:

empty
使用 Empty 常量值初始化字符串可新建字符串長度為零的 String 對象。零長度字符串的字符串表示形式為 ""。使用 Empty 值(而不是 null)初始化字符串可以降低發(fā)生 NullReferenceException 的可能性。

Null 字符串和空字符串
空字符串是不包含字符的 System.String 對象的實(shí)例。在各種編程方案中經(jīng)常會使用空字符串表示空白文本字段。可以對空字符串調(diào)用方法,因?yàn)樗鼈兪怯行У?System.String 對象。
相反,null 字符串并不引用 System.String 對象的實(shí)例,任何對 null 字符串調(diào)用方法的嘗試都會生成 NullReferenceException


總結(jié)

以上是生活随笔為你收集整理的C#中的DBNull、Null、String.Empty和“”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。