String.IsNullOrEmptyと"".length>0それはもっと効率的です

5037 ワード

今日DevTopicsのブログを見ていると、Stringを紹介するエッセイが見つかりました.String変数が空であるかどうかを判断する方法と属性の比較で、string変数's'をあげます.次の式はもっと速いですか.
1. String.IsNullOrEmpty( s ) 
2. s == null || s.Length == 0 

2つ目を当てたら正しいStringよりもIsNullOrEmpty法は15%速いが、これも百万分の1秒で測定されている.ここでは2つの方法を比較する簡単な例があります.01 using System; 02      03 namespace StringNullEmpty 04 { 05 class Program 06 { 07 static void Main( string [] args ) 08 { 09 long loop = 100000000; 10 string s = null ; 11 long option = 0; 12 long empties1 = 0; 13 long empties2 = 0; 14      15   DateTime time1 = DateTime.Now; 16      17 for ( long i = 0; i < loop; i++) 18 { 19   option = i % 4; 20 switch (option) 21 { 22 case 0: 23   s = null ; 24 break ; 25 case 1: 26   s = String.Empty; 27 break ; 28 case 2: 29   s = "H" ; 30 break ; 31 case 3: 32   s = "HI" ; 33 break ; 34 } 35 if (String.IsNullOrEmpty( s )) 36   empties1++; 37 } 38      39   DateTime time2 = DateTime.Now; 40      41 for ( long i = 0; i < loop; i++) 42 { 43   option = i % 4; 44 switch (option) 45 { 46 case 0: 47   s = null ; 48 break ; 49 case 1: 50   s = String.Empty; 51 break ; 52 case 2: 53   s = "H" ; 54 break ; 55 case 3: 56   s = "HI" ; 57 break ; 58 } 59 if (s == null || s.Length == 0) 60   empties2++; 61 } 62      63   DateTime time3 = DateTime.Now; 64      65   TimeSpan span1 = time2.Subtract( time1 ); 66   TimeSpan span2 = time3.Subtract( time2 ); 67   Console.WriteLine( "(String.IsNullOrEmpty( s )): Time={0} Empties={1}" , 68   span1, empties1 ); 69   Console.WriteLine( "(s == null || s.Length == 0): Time={0} Empties={1}" , 70   span2, empties2 ); 71   Console.ReadLine(); 72 } 73 } 74 }
一般的に私はstring a=stringと定義するのが好きです.Empty;nullかどうかを判断する必要はありません.