(1)NULL
null 關鍵字是表示不引用任何對象的空引用的文字值。null 是引用類型變量的默認值。那麼也只有引用型的變量能夠爲NULL,若是int i=null,的話,是不能夠的,由於Int是值類型的。性能
(2)""和String.Empty
這兩個都是表示空字符串。只不過""理論上從新開闢內存空間,而String.Empty指向一處。不過優化器會優化的!優化
string.Empty不分配存儲空間, ""分配一個長度爲空的存儲空間,因此通常用string.Empty,爲了之後跨平臺,仍是用string.empty。spa
在C# 中,大多數狀況下 "" 和 string.Empty 能夠互換使用。好比:code
string s = "";對象
string s2 = string.Empty;blog
if (s == string.Empty) {//} if語句成立內存
(3)斷定爲空字符串的幾種寫法,按照性能從高到低的順序是:字符串
s.Length == 0 優於 s == string.Empty 優於 s == ""string
注意:it
1.string str1="" 和 string str2=null 的區別。
str1是一個空字符串,空字符串是一個特殊的字符串,只不過這個字符串的值爲空,在內存中是有準確的指向的,
string str2=null,這樣定義後,只是定義了一個string 類的引用,str2並無指向任何地方,在使用前若是不實例化的話,都將報錯。
static void Main(string[] args) { string a = ""; string b = null; string c = string.Empty; string d = " "; Console.WriteLine(a.Length.ToString()); Console.WriteLine(c.Length.ToString()); try { Console.WriteLine(b.Length.ToString()); } catch (Exception) { Console.WriteLine("baoccuole"); } if (string.IsNullOrEmpty(a)) { Console.WriteLine("a"); } if (string.IsNullOrEmpty(b)) { Console.WriteLine("b"); } if (string.IsNullOrEmpty(c)) { Console.WriteLine("c"); } if (string.IsNullOrEmpty(d)) { Console.WriteLine("d"); } if (a == c) { Console.WriteLine("a == c"); } if (a == b) { Console.WriteLine("a == b"); } if (c == b) { Console.WriteLine("c == b"); } Console.ReadLine(); }