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 stringa). Un tipo di valore o una classe implementa il metodo per creare un metodo specifico del tipo adatto per determinare l'uguaglianza Equals delle istanze.

Nota

L'interfaccia IComparable<T> definisce il metodo, che determina l'ordinamento CompareTo 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 viene usata dagli oggetti di raccolta generici, ad esempio , e quando si verifica l'uguaglianza IEquatable<T> in metodi come Contains, LastIndexOfList<T>IndexOf, e .LinkedList<T>RemoveDictionary<TKey,TValue> 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 sta implementando 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 Equals(T) comportamento sia coerente con quello del metodo. Se si esegue l'override, 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 . Ciò garantisce che tutti i test per l'uguaglianza restituiscono risultati coerenti.

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

Per un tipo di valore, è sempre necessario implementare IEquatable<T> e eseguire l'override Equals(Object) per migliorare le prestazioni. Equals(Object) i tipi di valore delle caselle e si basa sulla reflection per confrontare due valori per l'uguaglianza. Sia l'implementazione che Equals(T) l'override di Equals(Object) devono restituire risultati coerenti.

Se si implementa , è necessario implementare IEquatable<T>IComparable<T> anche se le istanze del tipo possono essere ordinate o ordinate. Se il tipo implementa , si implementa IComparable<T>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. Prendere in considerazione 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