Freigeben über


Standardimplementierungen von Equals() und GetHashCode() lösen Ausnahme für Typen aus, die mit InlineArrayAttribute markiert sind

Equals(Object) und GetHashCode() lösen für Typen, die mit InlineArrayAttribute gekennzeichnet sind, nun standardmäßig eine Ausnahme vom Typ NotSupportedException aus. Bibliotheksautoren sollten diese beiden Methoden außer Kraft setzen, wenn erwartet wird, dass sie keine Ausnahme auslösen.

Vorheriges Verhalten

Bislang wurde von den Standardimplementierungen beim Berechnen der Gleichheit oder des Hashcodes nur das Platzhalterfeld ref verwendet.

Neues Verhalten

Ab .NET 9 wird durch die Standardimplementierungen für Equals(Object) und GetHashCode() immer eine Ausnahme vom Typ NotSupportedException ausgelöst, wenn InlineArrayAttribute auf einen Typ angewendet wurde.

Eingeführt in Version

.NET 9 Preview 6

Typ des Breaking Changes

Diese Änderung ist eine Verhaltensänderung.

Grund für die Änderung

Das aktuelle Verhalten ist sowohl für die Bestimmung der Gleichheit als auch für die Berechnung des Hashcodes inkorrekt, und Benutzern wird ein falsches Gefühl der Korrektheit vermittelt, wenn sie diese Funktionen aufrufen.

Bibliotheksautoren sollten sowohl Equals(Object) als auch GetHashCode() für alle Typen implementieren, die mit InlineArrayAttribute gekennzeichnet sind.

Betroffene APIs