dotnet/runtime

StringBuilder Has Different Equals Implementations

Open

#41.230 aperta il 23 ago 2020

Vedi su GitHub
 (14 commenti) (0 reazioni) (0 assegnatari)C# (5445 fork)batch import
area-System.Runtimedocumentationhelp wanted

Metriche repository

Star
 (17.886 star)
Metriche merge PR
 (Merge medio 12g 11h) (661 PR mergiate in 30 g)

Descrizione

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.

Guida contributor