Object Equals - Was ist die grundlegende Logik für reine Objekte oder Referenztypen, die Equals nicht überschreiben?

Ich bin hier angekommen, nachdem ich @ gelesen haDie und ich habe keine relevante Antwort gefunden - Bitte kennzeichnen Sie dies erst als Duplikat, wenn Sie die gesamte Frage gelesen haben.

Ich habe einen Reflektor benutzt und in @ geschaObject.Equals .Was ich gesehen habe ist:

[__DynamicallyInvokable, TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
public virtual bool Equals(object obj)
{
    return RuntimeHelpers.Equals(this, obj);
}

UndRuntimeHelpers.Equals sieht aus wie das

// System.Runtime.CompilerServices.RuntimeHelpers
/// <summary>Determines whether the specified <see cref="T:System.Object" /> instances are considered equal.</summary>
/// <returns>true if the <paramref name="o1" /> parameter is the same instance as the <paramref name="o2" /> parameter, or if both are null, or if o1.Equals(o2) returns true; otherwise, false.</returns>
/// <param name="o1">The first object to compare. </param>
/// <param name="o2">The second object to compare. </param>
[SecuritySafeCritical]
[MethodImpl(MethodImplOptions.InternalCall)]
public new static extern bool Equals(object o1, object o2);

Jetzt kann ich die Implementierung von @ nicht sehRuntimeHelpers.Equals aber nach der Beschreibung wird das @ aufgerufen, wenn beide Objekte nicht dieselbe Instanz und nicht null siobject.Equals Methode wieder und ich würde in eine Schleife geraten (ich spreche überreine Objekte).

Wenn ich reine Objekte sage, meine ich so etwas:

object pureObj1 = new object();
object pureObj2 = new object();
bool areEql = pureObj1.Equals(pureObj2);

Durch Dokumentation sollte dies @ aufrufObject.Equals und bekomme einrecusive stackoverflow. Ich denke, vielleicht ist die Dokumentation falsch und dies prüft reference equality für grundlegende Objekte - aber ich wollte sicher sein.

Endeffekt
Wenn zwei reine Objekte verglichen werden (z. B. kein String in ein Objekt geworfen wird), über einEquals call - wie stellt es fest, ob sie gleich sind? - Was passiert, wenn ich das @ nicht überschreiEquals Methode und ich rufeEquals auf zwei Objekten?
Ps. gibt es sowieso das ich das @ sehen kaRuntimeHelpers.Equals Quellcode

Antworten auf die Frage(6)

Ihre Antwort auf die Frage