標籤:
string.Empty是string類的一個靜態常量,而""則表示一個Null 字元串。
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 // 重載Equals13 [__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和Null 字元串比較結果:
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 }
C#中string.Empty和""、null的區別