UriTemplateEquivalenceComparer Classe

Définition

Classe permettant de comparer des instances UriTemplate d'équivalence structurelle (et non de référence).A class used to compare UriTemplate instances for structural (instead of reference) equivalence.

public ref class UriTemplateEquivalenceComparer : System::Collections::Generic::IEqualityComparer<UriTemplate ^>
public class UriTemplateEquivalenceComparer : System.Collections.Generic.IEqualityComparer<UriTemplate>
type UriTemplateEquivalenceComparer = class
    interface IEqualityComparer<UriTemplate>
Public Class UriTemplateEquivalenceComparer
Implements IEqualityComparer(Of UriTemplate)
Héritage
UriTemplateEquivalenceComparer
Implémente

Exemples

L'exemple suivant montre la différence entre l'égalité des références et l'égalité structurelle.The following example shows the difference between reference equality and structural equality. Il indique également comment utiliser l'objet UriTemplateEquivalenceComparer en tant que comparateur dans un dictionnaire.It also shows how to use the UriTemplateEquivalenceComparer as a comparer in a dictionary.

// Define two structurally equivalent templates
UriTemplate temp1 = new UriTemplate("weather/{state}/{city}");
UriTemplate temp2 = new UriTemplate("weather/{country}/{village}");

// Notice they are not reference equal, in other words
// they are do not refer to the same object
if (temp1 == temp2)
    Console.WriteLine("{0} and {1} are reference equal", temp1, temp2);
else
    Console.WriteLine("{0} and {1} are NOT reference equal", temp1, temp2);

// Notice they are structrually equal
if (temp1.IsEquivalentTo(temp2))
    Console.WriteLine("{0} and {1} are structurally equal", temp1, temp2);
else
    Console.WriteLine("{0} and {1} are NOT structurally equal", temp1, temp2);

// Create a dictionary and use UriTemplateEquivalenceComparer as the comparer
Dictionary<UriTemplate, object> templates = new Dictionary<UriTemplate, object>(new UriTemplateEquivalenceComparer());

// Add template 1 into the dictionary
templates.Add(temp1, "template1");

// The UriTemplateEquivalenceComparer will be used here to compare the template in the table with template2
// they are structurally equivalent, so ContainsKey will return true.
if (templates.ContainsKey(temp2))
    Console.WriteLine("Both templates hash to the same value");
else
    Console.WriteLine("Both templates do NOT hash to the same value");
'Define two structurally equivalent templates
Dim temp1 As UriTemplate = New UriTemplate("weather/{state}/{city}")
Dim temp2 As UriTemplate = New UriTemplate("weather/{country}/{village}")

'Notice they are not reference equal, in other words
'they are do not refer to the same object
If temp1.Equals(temp2) Then
    Console.WriteLine("{0} and {1} are reference equal", temp1, temp2)
Else
    Console.WriteLine("{0} and {1} are NOT reference equal", temp1, temp2)
End If

'Notice they are structrually equal
If (temp1.IsEquivalentTo(temp2)) Then
    Console.WriteLine("{0} and {1} are structurally equal", temp1, temp2)
Else
    Console.WriteLine("{0} and {1} are NOT structurally equal", temp1, temp2)
End If

'Create a dictionary and use UriTemplateEquivalenceComparer as the comparer
Dim templates As Dictionary(Of UriTemplate, Object) = New Dictionary(Of UriTemplate, Object)(New UriTemplateEquivalenceComparer())

'Add template 1 into the dictionary
templates.Add(temp1, "template1")

'The UriTemplateEquivalenceComparer will be used here to compare the template in the table with template2
'they are structurally equivalent, so ContainsKey will return true.
If (templates.ContainsKey(temp2)) Then
    Console.WriteLine("Both templates hash to the same value")
Else
    Console.WriteLine("Both templates do NOT hash to the same value")
End If

Remarques

Les instances UriTemplate sont comparées à l'aide de l'égalité des références par défaut.UriTemplate instances are compared using reference equality by default. La classe UriTemplateEquivalenceComparer évalue l'équivalence à l'aide de IsEquivalentTo(UriTemplate), au lieu de contrôler l'égalité des références par défaut.The UriTemplateEquivalenceComparer class evaluates equivalence using IsEquivalentTo(UriTemplate) instead of the default reference equality check. Cette classe est utile lorsque vous souhaitez comparer deux instances UriTemplate basées sur les URI qu'elles font correspondre, et non vérifier strictement l'égalité des références.This class is useful when you wish to compare two UriTemplate instances based on the URIs they match instead of strict reference equality.

Constructeurs

UriTemplateEquivalenceComparer()

Initialise une nouvelle instance de la classe UriTemplateEquivalenceComparer.Initializes a new instance of the UriTemplateEquivalenceComparer class.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.Determines whether the specified object is equal to the current object.

(Hérité de Object)
Equals(UriTemplate, UriTemplate)

Compare deux instances UriTemplate d'une équivalence.Compares two UriTemplate instances for equivalence.

GetHashCode()

Fait office de fonction de hachage par défaut.Serves as the default hash function.

(Hérité de Object)
GetHashCode(UriTemplate)

Obtient un code de hachage pour l'instance UriTemplate spécifiée.Gets a hash code for the specified UriTemplate instance.

GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.Creates a shallow copy of the current Object.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.Returns a string that represents the current object.

(Hérité de Object)

S’applique à