C#中null和””以及string.Empty的區別

來源:互聯網
上載者:User

 

string是參考型別;
string str = null 沒有建立記憶體空間,str中存放的是Null 參考指標;
string str = "" 建立了記憶體空間,str中存放的是指向堆中的指標。

簡單地說:
string str ="";
給你一張白紙;
string str = null;
連白紙也沒有。

string.Empty就相當於"" 
一般用於字串的初始化 
比如: 
string a; 
Console.WriteLine(a);//這裡會報錯,因為沒有初始化a 

而下面不會報錯: 
string a=string.Empty; 
Console.WriteLine(a); 

或者用於比較: 
if(a=="") 
if(a==string.Empty) 
上面兩句是一樣的效果。

  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 == "" 

您關於String.Empty和Null的問題是這樣的,這兩個都是表示Null 字元串,其中有一個重點是string str1= String.Empty和 string str2=null 的區別,這樣定義後,str1是一個Null 字元串,Null 字元串是一個特殊的字串,只不過這個字串的值為空白,在記憶體中是有準確的指向的,string str2=null,這樣定義後,只是定義了一個string 類的引用,str2並沒有指向任何地方,在使用前如果不執行個體化的話,都將報錯。textBox1.Text的值為零長度字串 ""。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.