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

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

?

DBNull.Value與Null的區別

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

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

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

例:表tbl_Student

id????name????address

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

將上述表數據填充到.net 的名為dt的DataTable中。

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

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

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

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

并非想象中的null。而是出現異常:索引超出數組界限。

對于普通的引用類型變量,如果指向對象為null,則會提示:未將對象引用設置到對象實例。但對于使用dt.Rows[i][j]取值,如果第i行存在但i行沒有j列,則直接出現異常,不會返回一個指向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# 中,大多數情況下 "" 和 string.Empty 可以互換使用。比如:

C中的DBNull、Null、和String.Empty解釋 - yorkguo - 人生絢麗 知者不惑string s = "";

C中的DBNull、Null、和String.Empty解釋 - yorkguo - 人生絢麗 知者不惑string s2 = string.Empty;

C中的DBNull、Null、和String.Empty解釋 - yorkguo - 人生絢麗 知者不惑

if (s == string.Empty)?C中的DBNull、Null、和String.Empty解釋 - yorkguo - 人生絢麗 知者不惑{

?

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

s.Length == 0????? 優于 s == string.Empty????? 優于 s == ""

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

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


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

問:

string aa = String.Empty;
string aa = null;
string aa = "";
有什么區別?


答1:

一、
string aa;

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

二、
string aa = String.Empty;

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

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

?

答2:

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

Null 字符串和空字符串
空字符串是不包含字符的 System.String 對象的實例。在各種編程方案中經常會使用空字符串表示空白文本字段。可以對空字符串調用方法,因為它們是有效的 System.String 對象。
相反,null 字符串并不引用 System.String 對象的實例,任何對 null 字符串調用方法的嘗試都會生成 NullReferenceException


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/459027.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/459027.shtml
英文地址,請注明出處:http://en.pswp.cn/news/459027.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matlab數值很小出錯,求大神幫忙解決一下,用MATLAB求解動力學數據總是出錯~ - 計算模擬 - 小木蟲 - 學術 科研 互動社區...

CODE:function KineticsEst5 % 動力學ODE方程模型的參數估計%%%% The variables y here are y(1)xB, y(2)xoNB, y(3)xmNB,y(4)xpNB,y(5)xDNB .clear allclck0 [5 5 5 5 5]; % 參數初值lb [0 0 0 0 0]; % 參數下限ub [inf inf inf inf inf]; % 參數上限x0 [0 0 0 0 0 0];Kin…

iOS開發--驗證碼

第一步&#xff0c;拖兩個空間textfiled和button到storyboard上的viewcontroller上。 第二步&#xff0c;拖線&#xff0c;鏈接到.h文件中代碼如下&#xff1a; 1property (weak, nonatomic) IBOutlet UIButton *l_timeButton;第三步&#xff0c;在,m文件中為l_timeButton設置監…

Standard C Episode 8

C語言函數和程序結構 通過函數可以把大的計算任務分解成若干個較小任務&#xff0c;從而使得思路更加清晰&#xff0c;同時函數也大大提高了代碼的復用率&#xff0c;提高了工作效率。要注意的是多函數之間應該盡可能地高聚合低耦合。另一方面&#xff0c;一個程序可以保存在一…

C# Socket 編程詳解

Microsoft.Net Framework為應用程序訪問Internet提供了分層的、可擴展的以及受管轄的網絡服務&#xff0c;其名字空間System.Net和 System.Net.Sockets包含豐富的類可以開發多種網絡應用程序。.Net類采用的分層結構允許應用程序在不同的控制級別上訪問網絡&#xff0c;開發人員…

java 線程池 wait,Java 多線程 之 wait等待 線程實例

package com.wait.notify;/**題目: 人們在火車站的售票窗口排隊買火車票1. 北京西站開門2. 打開售票窗口3. 北京西站有10張去長沙的票4. 打開2個售票窗口,5 假設每個售票窗口每隔1秒鐘買完一張票1. 根據 名詞 找類人們(Person), 火車站(Station),火車票(Ticket) , 售票窗口e 是…

002 exercises

求列表全排列lst [1,2,3] l1 [(x,y,z) for x in lst for y in lst for z in lst if x ! y if y ! z if x ! z] print(l1)給定一個非負整數num,重復的加每一位,直到最后只剩下一位例如: num 38,計算過程如下:3 8 111 1 2最后輸出結果為2#遞歸 def add(num):if len(str(num…

(線段樹 點更新 區間求和)lightoj1112

鏈接&#xff1a; http://acm.hust.edu.cn/vjudge/contest/view.action?cid88230#problem/D &#xff08;密碼0817&#xff09; Description Robin Hood likes to loot rich people since he helps the poor people with this money. Instead of keeping all the money togeth…

TCP/ip通信模式

TCP/IP 應用層與應用程序*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** 文檔出處&#xff1a;http://blog.csdn.net/bingxx11/article…

PHP中判斷空的方法,php中類型判斷和NULL,空值檢查的方法

在一些接口和數據庫的設計中。數據庫的非必填字段可能為null或者為空。這個時候接口前端javascript去判斷的時候就會比較麻煩。為了便于統一的判斷。一律把null和 空裝換成 空.這樣前端的判斷就變得簡潔 if(aa ){........}建議使用 或者 來判斷。。以下是我簡短的一個把數據…

8 Regular Expressions You Should Know

2019獨角獸企業重金招聘Python工程師標準>>> Regular expressions are a language of their own. When you learn a new programming language, theyre this little sub-language that makes no sense at first glance. Many times you have to read another tutori…

poj 3278 catch that cow BFS(基礎水)

Catch That CowTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 61826 Accepted: 19329Description Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a num…

制作已編譯的html幫助文件

http://www.cnblogs.com/cm186man/archive/2008/03/10/1098896.html引用 HTML幫助文檔從結構上來看可分為兩個部分&#xff0c;運行器和文檔內容。它的一個好處是能使幫助文檔跨平臺運行&#xff0c;只要有不同平臺上的運行器和瀏覽器&#xff0c;幫助文檔不再需要重新編制&…

matlab %3c handle,volume browser (updated).htm 源代碼在線查看 - Matlab顯式三維地震數據的源代碼 資源下載 蟲蟲電子下載站...

Comments: any comments on this error:??? Error using > timesIntegers can only be combined with integers of the same class, or scalar doubles.Error in > interp3>linear at 368 F (( arg4(ndx).*(1-t) arg4(ndx1).*t ).*(1-s) ...Error in > inter…

PHPer轉戰Android的學習過程以及Android學習

原文作者&#xff1a; eoeadmin原文地址&#xff1a; http://my.eoe.cn/shuhai/archive/19684.html--------------------------------------------這篇文章主要寫了一個PHP程序猿是如何轉戰學習Android的。 第一步&#xff1a;直接跨過java的學習&#xff0c;原因有我之前看過畢…

SQL中實現截取字符串的函數

SQL中實現截取字符串的函數 如果想實現從數據庫中取數據時截取一個字段下的內容或者截取一串字符串&#xff0c;則能夠實現這種效果的函數有Left&#xff0c;Right&#xff0c;SubString三個函數。1.Left函數&#xff1a;Left&#xff08;character_expression , integer_expre…

php時區設置問題,PHP 的時區設置問題_PHP教程

裝上PHP5后你會發現這樣的問題&#xff1a;你也許會發現&#xff0c;輸出的時間和你現在的時間是不相同的。原因是假如你不在程序或配置文件中設置你的服務器當地時區的話&#xff0c;PHP所取的時間是格林威治標準時間&#xff0c;所以和你當地的時間會有出入。格林威治標準時間…

HDU 5392 BC #51

就是求最大公倍數&#xff0c;但要用分解質因子求。 自己寫的WA到爆。。。。 #include<iostream> #include<stdio.h> #include<math.h>#include<algorithm>using namespace std;#define rd(x) scanf("%d",&x) #define rd2(x,y) scanf(&q…

下拉框——把一個select框中選中內容移到另一個select框中遇到的問題

在使用jQuery實現把一個select框中選中內容移到另一個select框中功能時遇到了一個問題&#xff0c;就是點擊按鈕時內容可以到另一個select框中&#xff0c;但是到了另一個select框中的內容卻很快閃退回原來的select框中&#xff0c;代碼如下&#xff1a; <select class"…

windows API 串口編程參考

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** &#xff08;一&#xff09;Windows API串口通信編程概述 Windows環境下的串口編程與D…

jquery post php返回html,jquery ajax post 提交數據,返回的是當前網頁的html?

代碼如下用戶名:密 碼:$("#login_submit").bind("click",function(){var type "post";var url "index.php?madmin&cindex&acheckLogin";var formArrays $("#admin_form").serializeArray();var requestData …