Condividi tramite


IEquatable<T> Interfaccia

Definizione

Definisce un metodo generalizzato che un tipo di valore o una classe implementa per creare un metodo specifico del tipo per determinare l'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 metodo IEquatable<T>.Equals.

Commenti

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

Nota

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

L'interfaccia IEquatable<T> viene usata da oggetti di raccolta generici come Dictionary<TKey,TValue>, 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>, è necessario eseguire anche l'override delle implementazioni della classe di base di Equals(Object) e GetHashCode() in modo che il relativo comportamento sia coerente con quello del metodo Equals(T). Se si esegue l'override di Equals(Object), l'implementazione sottoposta a override viene chiamata anche nelle chiamate al metodo Equals(System.Object, System.Object) statico nella classe. È inoltre necessario eseguire l'overload degli operatori op_Equality 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 sempre IEquatable<T> ed eseguire l'override di Equals(Object) per ottenere prestazioni migliori. Equals(Object) i tipi valore delle caselle e 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 anche IComparable<T> se è possibile ordinare o ordinare istanze del tipo. Se il tipo implementa IComparable<T>, si implementa quasi sempre 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 consideri una classe Person in cui si ordina in ordine alfabetico. 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