asp.NetでDBNull.Value,null,String.Empty区別の浅い分析

2173 ワード

まず、nullはC#(VB.NETはNothing)であり、ある参照対象変数がエンティティを「参照していない」場合の状況を表す(典型的な症状は、この変数のメソッドを呼び出すとNullExceptionなどの異常が投げ出される).
String.Emptyは、String変数に文字が含まれていない(「」に等しい)ことを示す静的共通変数です.しかし、性能的にはStringを使います.Emptyは宣言よりも「」を1つ使うほうがいい――明らかに前者はStringクラスの静的変数であり、いずれにしても1つのインスタンスしか生成されず、後者は何回使うかで数回発生する恐れがある.
 
  
string str="";

//“”: , , , 。

string str=string.Empty;

//string.Empty: , , , 。


DBNullについてはValueは、静的プロパティでもあります.これは、データベース(例えば、DataReaderを使用してデータを読み込む場合、またはDataTableの行のカラムデータの比較時)の「Null数値」比較にのみ使用されます.SQLのフィールドがNullの場合、そのフィールドが「値なし」であることを示しているだけで、C#の「参照なし」ではありません.これらの問題に注意してください.
1)DataReaderでExecuteScaleを実行する場合、データを取得するかどうか分からない場合はnullで判断する必要があります(空の参照のため).少なくとも1つのデータを読み取ると確信しているが、データが空かどうか分からない場合はDBNullを使用します.Valueは数値判断を行います.
2)受け1,あるフィールドが何のデータもないと確信した場合,文字がないとStringに等しい.Emptyと「」なので、Stringは完全に使えます.Emptyまたは「」で判断します(重要な結論:DbNull.Value=String.Empty=").
3)また、stringタイプのDataColumnに対して付与(例えばnullに付与)を行うと、このようにして、実際にDataTableにnull(SQLの実際の数値に対応するように)を1つ保存することは不可能である、Stringに変換される.Emptyか「」です.判断方法は「重要な結論」と同じです.
簡単に言えば、
string str ="";
白い紙を1枚あげます.
string str = null;
白い紙もない.
string.Emptyは「」に相当します
文字列の初期化に一般的に使用されます
例:
 
  
string a;

Console.WriteLine(a);// , a


次は間違いを報告しません.
 
  
string a=string.Empty;

Console.WriteLine(a);


または比較に使用します.
 
  
if(a=="")

if(a==string.Empty)


上の2つの文は同じ効果です.
string.Emptyはストレージスペースを割り当てません
「」には、長さが空のストレージスペースが割り当てられます.
一般的にstringを使いますEmpty
後でプラットフォームをまたぐためにstringを使います.empty
C#では、ほとんどの場合「」とstring.Emptyは互換的に使用できます.例:
 
  
string s = "";

string s2 = string.Empty;

if (s == string.Empty) {

//
}


if文成立
空文字列と判定されたいくつかの書き方は、性能が高い順に次のようになります.
s.Length==0はs==stringより優れている.Emptyはs==""より優れている