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 dai tipi i cui valori possono essere equati (ad esempio, le classi numeriche e stringhe). Un tipo di valore o una classe implementa il Equals metodo per creare un metodo specifico del tipo adatto per determinare l'uguaglianza delle istanze.

Nota

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

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

Note per gli implementatori

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

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

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

Per un tipo di valore, è consigliabile implementare IEquatable<T> ed eseguire l'override Equals(Object) per ottenere prestazioni migliori. Equals(Object) box value types and si basa sulla reflection per confrontare due valori per verificarne l'uguaglianza. Sia l'implementazione di Equals(T) che l'override di Equals(Object) devono restituire risultati coerenti.

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

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 consideri una Person classe in cui si ordina alfabeticamente. Due persone con lo stesso nome ordinano lo stesso, 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