dotnet/runtime
Auf GitHub ansehenStringBuilder Has Different Equals Implementations
Open
#41.230 geöffnet am 23. Aug. 2020
area-System.Runtimedocumentationhelp wanted
Repository-Metriken
- Stars
- (17.886 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 12T 11h) (661 gemergte PRs in 30 T)
Beschreibung
Description
StringBuilder has two different versions of Equals. Equals(object) uses the version defined in class Object, while Equals(StringBuilder) uses the in-class implementation. These two different behaviors are confusing.
Considering these code. The different results are confusing.
StringBuilder a = new StringBuilder();
StringBuilder b = new StringBuilder();
object c = b;
a.Append("abc");
b.Append("abc");
Console.WriteLine(a.Equals(b)); // True
Console.WriteLine(a.Equals(c)); // False
Configuration
OS Name: Windows OS Version: 10.0.18363 OS Platform: Windows RID: win10-x64 Base Path: C:\Program Files\dotnet\sdk\3.1.301\
.NET Core SDK: Version: 3.1.301 Commit: 7feb845744
Regression?
Not noticed.
Other information
None.