乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      asp.net(c#)中String.Empty、NULL、"" 三者到底有啥區(qū)別和聯(lián)系?【討論題】

       昵稱10504424 2013-02-22

       

      開門見山,首先看下面代碼,你認為結果分別是什么? 

      復制代碼
             string str = string.Empty;
      string str1 = "";
      string str2 = null;
      bool t = string.IsNullOrEmpty(str);
      bool t1 = string.IsNullOrEmpty(str1);
      bool t2 = string.IsNullOrEmpty(str2);
      復制代碼

      輸出結果告訴我們。都是true。是不是很郁悶,怎么都是true。難道就沒區(qū)別嗎?

      這三種賦值的寫法。想必敲過代碼的都寫過。糾結之余我在網(wǎng)上整理到如下知識。分享于此

      網(wǎng)絡上說:string.Empty就相當于"",

      但這里說的是“相當于”,不是“等于”

      很顯然上面都是賦值,但如果這樣寫,會報錯,同時也驗證了使用前必須先初始化也就是賦值。

              string str1;
      bool t1 = string.IsNullOrEmpty(str1);
      Console.WriteLine(str1);

      既然從賦值判斷是相等的。那不同之處在哪里?難道在分配內存空間上?

      最常見的一個面試題就是:string str=""和string str=null有什么區(qū)別,這個大家應該都不陌生。回答都是:前者分配內存為空字符串的空間,也就是長度為空;但后者根本就不分配空間。所以從效率上來講后者是不是劃算?

      可網(wǎng)上有的說string str=string.Empty也不分配內存空間,開頭說了,Empty相當于"",但現(xiàn)在Empty跟null一樣都是不分配內存空間,怎么又變成一家親了。

      網(wǎng)絡還有這么一句話:為了以后跨平臺,使用string.Empty。額。""和null不跨平臺嗎?

      以下也是在網(wǎng)絡找到的解釋:

      String.Empty和Null,這兩個都是表示空字符串

      string str1= String.Empty,這樣定義后,str1是一個空字符串,空字符串是一個特殊的字符串,

      只不過這個字符串的值為空,在內存中是有準確的指向的

      string str2=null,這樣定義后,只是定義了一個string 類的引用,str2并沒有指向任何地方,在使用前如果不實例化的話,都將報錯。textBox1.Text的值為零長度字符串 ""。

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

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

      判斷字符串是否為空最好的方法就是 s.Length==0 !

       

      緊接著我還找到個有趣的實驗:

      一個外國人做了一個測試,測試的對象有5種,誰的效率更高:

      s == ""

      s == string.empty

      s.equals(”")

      s.equals(string.empty)

      s.length == 0

      測試代碼見:http://www./diannao/dn87571/

      測試結果:

      最后得到測試的結果如下:

       

      [s == ""]

      空字符串, 10315.6250 毫秒 短字符串, 8307.8125 毫秒 長字符串, 8564.0625 毫秒

      [s == string.empty]

      空字符串, 3573.4375 毫秒 短字符串,8307.8125 毫秒 長字符串, 8603.1250 毫秒

      [s.equals("")]

      空字符串, 9517.1875 毫秒 短字符串, 7537.5000 毫秒 長字符串, 7576.5625 毫秒

      [s.equals(string.empty)]

      空字符串, 9540.6250 毫秒 短字符串, 7515.6250 毫秒 長字符串, 7607.8125 毫秒

      [s.length == 0]

      空字符串, 443.7500 毫秒 短字符串, 443.7500 毫秒 長字符串, 445.3125 毫秒

      很明顯用字符串的length屬性是最快的。

      得到以下結論:
      用s.equals("stringtocompare")來判斷非空字符串是否相等,用 s.length == 0來判斷是否是空字符串(注意這里不能用這個來判斷字符串為null的情況,否則會出現(xiàn)“未將對象引用設置到對象的實例”的錯誤)。

      在2.0中判斷字符串是否為空(包含null的情況)用string.isnullorempty(str);

      路過的高手進來討論下,大家友好積極的發(fā)言,這三者到底啥區(qū)別,是不是正如以上這些解釋。謝謝!

       

       

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多