Fork me on GitHub

C#中string.Empty和""、null的区别

 string.Empty是string类的一个静态常量,而""则表示一个空字符串。

 string是一种特殊的引用类型,它的null值则表示没有分配内存。

 使用ILSpy反编译String类,可以看到string.Equalus方法重写了Object的Equalus()方法:先比较引用,再比较字符串的内容,地址相同,值必相同。

 1     // 重写Object方法
 2     [__DynamicallyInvokable, ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
 3         public override bool Equals(object obj)
 4         {
 5             if (this == null)
 6             {
 7                 throw new NullReferenceException();
 8             }
 9             string text = obj as string;
10             return text != null && (this == obj || (this.Length == text.Length && string.EqualsHelper(this, text)));
11         }
12     // 重载Equals
13        [__DynamicallyInvokable, ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
14         public bool Equals(string value)
15         {
16             if (this == null)
17             {
18                 throw new NullReferenceException();
19             }
20             return value != null && (this == value || (this.Length == value.Length && string.EqualsHelper(this, value)));
21         }

 string.Empty和空字符串比较结果:

 1      static void Main(string[] args)
 2         {
 3             String emptyString = "";
 4 
 5             // True
 6             Console.WriteLine(emptyString == String.Empty);
 7 
 8             // True
 9             Console.WriteLine(emptyString.Equals(string.Empty));
10         }

 

posted @ 2015-09-19 17:31  CodeOddity  阅读(778)  评论(0编辑  收藏  举报