UriTemplateEquivalenceComparer Klasa

Definicja

Klasa służąca do porównywania UriTemplate wystąpień dla równoważności strukturalnej (zamiast odniesienia).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)
Dziedziczenie
UriTemplateEquivalenceComparer
Implementuje

Przykłady

Poniższy przykład pokazuje różnicę między równośćmi referencyjnymi i równości strukturalne.The following example shows the difference between reference equality and structural equality. Pokazano również, jak używać jako modułu UriTemplateEquivalenceComparer porównującego w słowniku.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

Uwagi

UriTemplate wystąpienia są porównywane domyślnie przy użyciu równości odwołań.UriTemplate instances are compared using reference equality by default. UriTemplateEquivalenceComparerKlasa oblicza równoważność przy użyciu IsEquivalentTo(UriTemplate) zamiast domyślnego sprawdzania równości odwołań.The UriTemplateEquivalenceComparer class evaluates equivalence using IsEquivalentTo(UriTemplate) instead of the default reference equality check. Ta klasa jest przydatna, gdy chcesz porównać dwa UriTemplate wystąpienia na podstawie identyfikatorów URI, które pasują, zamiast dokładnego równości odwołań.This class is useful when you wish to compare two UriTemplate instances based on the URIs they match instead of strict reference equality.

Konstruktory

UriTemplateEquivalenceComparer()

Inicjuje nowe wystąpienie klasy UriTemplateEquivalenceComparer.Initializes a new instance of the UriTemplateEquivalenceComparer class.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
Equals(UriTemplate, UriTemplate)

Porównuje dwa UriTemplate wystąpienia dla równoważności.Compares two UriTemplate instances for equivalence.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetHashCode(UriTemplate)

Pobiera kod skrótu dla określonego UriTemplate wystąpienia.Gets a hash code for the specified UriTemplate instance.

GetType()

Pobiera Type bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy skróconą kopię bieżącego elementu Object .Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Dotyczy