IEquatable<T> Interfaccia

Definizione

Definisce un metodo generalizzato che viene implementato da un tipo di valore o da una classe per creare un metodo specifico del tipo per la determinazione dell'uguaglianza delle istanze.

generic <typename T>
public interface class IEquatable
public interface IEquatable<T>
type IEquatable<'T> = interface
Public Interface IEquatable(Of T)

Parametri di tipo

T

Tipo di oggetti da confrontare.

Derivato

Esempio

Vedere l'esempio per il IEquatable<T>.Equals metodo .

Commenti

Questa interfaccia viene implementata da tipi i cui valori possono essere equiparato (ad esempio, le classi numeriche e stringa). Un tipo valore o una classe implementa il metodo per creare un metodo specifico del tipo adatto per Equals determinare l'uguaglianza delle istanze.

Nota

IComparable<T>L'interfaccia definisce il metodo , che determina CompareTo l'ordinamento delle istanze del tipo di implementazione. IEquatable<T>L'interfaccia definisce il metodo , che determina Equals l'uguaglianza delle istanze del tipo di implementazione.

L'interfaccia viene utilizzata dagli oggetti raccolta generici, ad esempio , e durante il test dell'uguaglianza in metodi come IEquatable<T> Dictionary<TKey,TValue> , , e List<T> LinkedList<T> Contains IndexOf LastIndexOf Remove . Deve essere implementato per qualsiasi oggetto che potrebbe essere archiviato in una raccolta generica.

Note per gli implementatori

Sostituire il parametro di tipo IEquatable<T> dell'interfaccia con il tipo che implementa questa interfaccia.

Se si implementa IEquatable<T> , è necessario eseguire anche l'override delle implementazioni della classe base di e in modo che il relativo comportamento sia coerente con quello del metodo Equals(Object) GetHashCode() Equals(T) . Se si esegue l'override di , l'implementazione sottoposta a override viene chiamata Equals(Object) anche nelle chiamate al metodo statico nella classe Equals(System.Object, System.Object) . È inoltre necessario eseguire l'overload degli op_Equality operatori op_Inequality e . In questo modo tutti i test per l'uguaglianza restituiscono risultati coerenti.

Per informazioni sull'override Equals(Object) di , vedere Equals(Object) .

Per un tipo valore, è sempre necessario implementare ed IEquatable<T> eseguire l'override Equals(Object) per ottenere prestazioni migliori. Equals(Object) utilizza la reflection per confrontare due valori per verificarne l'uguaglianza. Sia l'implementazione Equals(T) di che l'override di Equals(Object) devono restituire risultati coerenti.

Se si implementa IEquatable<T> , è necessario implementare anche se le IComparable<T> istanze del tipo possono essere ordinate o ordinate. Se il tipo implementa IComparable<T> , quasi sempre si implementa anche IEquatable<T> .

Si noti che esistono alcune progettazioni in cui un tipo supporta una relazione di ordine, ma l'uguaglianza può essere distinta da una relazione di ordinamento. Si Person consideri una classe in cui l'ordinamento è alfabetico. Due persone con lo stesso nome vengono ordinate allo stesso modo, ma non sono la stessa persona.

Metodi

Equals(T)

Indica se l'oggetto corrente è uguale a un altro oggetto dello stesso tipo.

Si applica a

Vedi anche