Guid.CompareTo Metod

Definition

Jämför den här instansen med ett angivet objekt eller Guid och returnerar en indikation på deras relativa värden.

Överlagringar

Name Description
CompareTo(Guid)

Jämför den här instansen med ett angivet Guid objekt och returnerar en indikation på deras relativa värden.

CompareTo(Object)

Jämför den här instansen med ett angivet objekt och returnerar en indikation på deras relativa värden.

CompareTo(Guid)

Källa:
Guid.cs
Källa:
Guid.cs
Källa:
Guid.cs
Källa:
Guid.cs
Källa:
Guid.cs

Jämför den här instansen med ett angivet Guid objekt och returnerar en indikation på deras relativa värden.

public:
 virtual int CompareTo(Guid value);
public int CompareTo(Guid value);
abstract member CompareTo : Guid -> int
override this.CompareTo : Guid -> int
Public Function CompareTo (value As Guid) As Integer

Parametrar

value
Guid

Ett objekt som ska jämföras med den här instansen.

Returer

Ett signerat tal som anger de relativa värdena för den här instansen och value.

Returvärde Beskrivning
Ett negativt heltal Den här instansen är mindre än value.
Noll Den här instansen är lika med value.
Ett positivt heltal Den här instansen är större än value.

Implementeringar

Exempel

I följande exempel anropas CompareTo(Guid) metoden för att jämföra ett GUID-värde med två liknande GUID-värden.

using System;

public class Example
{
   public static void Main()
   {
      Guid mainGuid = Guid.Parse("01e75c83-c6f5-4192-b57e-7427cec5560d");
      unchecked {
         Guid guid2 = new Guid(0x01e75c83, (short) 0xc6f5,
                               0x4192,
                               new Byte[] { 0xb5, 0x7e, 0x74, 0x27, 0xce, 0xc5, 0x56, 0x0c} );
         Guid guid3 = Guid.Parse("01e75c84-c6f5-4192-b57e-7427cec5560d");

         Console.WriteLine("{0} {1:F} {2}", mainGuid,
                           (Comparison) mainGuid.CompareTo(guid2), guid2);
         Console.WriteLine("{0} {1:F} {2}", mainGuid,
                           (Comparison) mainGuid.CompareTo(guid3), guid3);
      }
   }

   private enum Comparison
   { LessThan = -1, Equals = 0, GreaterThan = 1 }
}
// The example displays the following output:
//    01e75c83-c6f5-4192-b57e-7427cec5560d GreaterThan 01e75c83-c6f5-4192-b57e-7427cec5560c
//    01e75c83-c6f5-4192-b57e-7427cec5560d LessThan 01e75c84-c6f5-4192-b57e-7427cec5560d
open System

type Comparison =
    | ``Less Than`` = -1
    | Equals = 0
    | ``Greater Than`` = 1

let mainGuid = 
    Guid.Parse "01e75c83-c6f5-4192-b57e-7427cec5560d"

let guid2 = Guid(0x01e75c83, 0xc6f5s, 0x4192s, [| 0xb5uy; 0x7euy; 0x74uy; 0x27uy; 0xceuy; 0xc5uy; 0x56uy; 0x0cuy |])
let guid3 = 
    Guid.Parse("01e75c84-c6f5-4192-b57e-7427cec5560d")

printfn $"{mainGuid} {mainGuid.CompareTo guid2 |> enum<Comparison> :F} {guid2}"
printfn $"{mainGuid} {mainGuid.CompareTo guid3 |> enum<Comparison> :F} {guid3}"

// The example displays the following output:
//    01e75c83-c6f5-4192-b57e-7427cec5560d Greater Than 01e75c83-c6f5-4192-b57e-7427cec5560c
//    01e75c83-c6f5-4192-b57e-7427cec5560d Less Than 01e75c84-c6f5-4192-b57e-7427cec5560d
Module Example
   Public Sub Main()
      Dim mainGuid As Guid = Guid.Parse("01e75c83-c6f5-4192-b57e-7427cec5560d")
      Dim guid2 As New Guid(&h01e75c83, 
                            BitConverter.ToInt16(new Byte() { &hf5, &hc6 }, 0), 
                            &h4192, 
                            new Byte() { &hb5, &h7e, &h74, &h27, &hce, &hc5, &h56, &h0c} )
      Dim guid3 As Guid = Guid.Parse("01e75c84-c6f5-4192-b57e-7427cec5560d")
      
      Console.WriteLine("{0} {1:F} {2}", mainGuid, 
                        CType(mainGuid.CompareTo(guid2), Comparison), guid2)
      Console.WriteLine("{0} {1:F} {2}", mainGuid, 
                        CType(mainGuid.CompareTo(guid3), Comparison), guid3)
   End Sub
   
   Private Enum Comparison As Integer
      LessThan = -1
      Equals = 0
      GreaterThan = 1
   End Enum
End Module
' The example displays the following output:
'    01e75c83-c6f5-4192-b57e-7427cec5560d GreaterThan 01e75c83-c6f5-4192-b57e-7427cec5560c
'    01e75c83-c6f5-4192-b57e-7427cec5560d LessThan 01e75c84-c6f5-4192-b57e-7427cec5560d

Kommentarer

Metoden CompareTo jämför GUID:erna som om de vore värden som tillhandahålls konstruktorn Guid(Int32, Int16, Int16, Byte[]) enligt följande:

  • Den jämför UInt32 värdena och returnerar ett resultat om de är ojämlika. Om de är lika med utför den nästa jämförelse.

  • Den jämför de första UInt16 värdena och returnerar ett resultat om de är ojämlika. Om de är lika med utför den nästa jämförelse.

  • Den jämför de andra UInt16 värdena och returnerar ett resultat om de är ojämlika. Om de är lika med utför den nästa jämförelse.

  • Om utför en byte-för-byte-jämförelse av de kommande åtta Byte värdena. När det stöter på det första ojämlika paret returneras resultatet. Annars returneras 0 för att indikera att de två Guid värdena är lika.

Observera att de sista åtta byteen visas i strängrepresentationen av en Guid i omvänd ordning, från låg byte till hög byte. I strängrepresentationen Guid av värdet "01e75c83-c6f5-4192-b57e-7427cec5560d" är de sista åtta byteen "b57e-7427cec5560d". Med andra ord jämförs de sista åtta byteen med byte för byte från vänster till höger från och med 0xb5.

Om två GUID:er har samma värden för en komponent jämför metoden nästa komponent. När den hittar en komponent vars värden är ojämlika returneras resultatet.

Den här metoden implementerar System.IComparable<T> gränssnittet och presterar något bättre än Guid.CompareTo metoden eftersom den inte behöver konvertera parametern value till ett Guid värde.

Gäller för

CompareTo(Object)

Källa:
Guid.cs
Källa:
Guid.cs
Källa:
Guid.cs
Källa:
Guid.cs
Källa:
Guid.cs

Jämför den här instansen med ett angivet objekt och returnerar en indikation på deras relativa värden.

public:
 virtual int CompareTo(System::Object ^ value);
public int CompareTo(object? value);
public int CompareTo(object value);
abstract member CompareTo : obj -> int
override this.CompareTo : obj -> int
Public Function CompareTo (value As Object) As Integer

Parametrar

value
Object

Ett objekt att jämföra, eller null.

Returer

Ett signerat tal som anger de relativa värdena för den här instansen och value.

Returvärde Beskrivning
Ett negativt heltal Den här instansen är mindre än value.
Noll Den här instansen är lika med value.
Ett positivt heltal Den här instansen är större än value, eller value är null.

Implementeringar

Undantag

value är inte en Guid.

Exempel

I följande exempel används attributet GuidAttribute för att tilldela ett GUID till en klass. Det hämtar värdet för det här GUID:et Attribute.GetCustomAttribute genom att anropa metoden och skicka Value egenskapen för det returnerade GuidAttribute objektet till Parse metoden. Sedan jämförs guid med en matris med värden.

using System;
using System.Runtime.InteropServices;

[Guid("936DA01F-9ABD-4d9d-80C7-02AF85C822A8")]
public class Example
{
   public static void Main()
   {
      GuidAttribute guidAttr = (GuidAttribute) Attribute.GetCustomAttribute(typeof(Example),
                                                      typeof(GuidAttribute));
      Guid guidValue = Guid.Parse(guidAttr.Value);
      Object[] values = { null , 16,
                          Guid.Parse("01e75c83-c6f5-4192-b57e-7427cec5560d"),
                          guidValue };
      foreach (var value in values) {
         try {
            Console.WriteLine("{0} and {1}: {2}", guidValue,
                              value == null ? "null" : value,
                              guidValue.CompareTo(value));
         }
         catch (ArgumentException) {
            Console.WriteLine("Cannot compare {0} and {1}", guidValue,
                              value == null ? "null" : value);
         }
      }
   }
}
// The example displays the following output:
//    936da01f-9abd-4d9d-80c7-02af85c822a8 and null: 1
//    Cannot compare 936da01f-9abd-4d9d-80c7-02af85c822a8 and 16
//    936da01f-9abd-4d9d-80c7-02af85c822a8 and 01e75c83-c6f5-4192-b57e-7427cec5560d: 1
//    936da01f-9abd-4d9d-80c7-02af85c822a8 and 936da01f-9abd-4d9d-80c7-02af85c822a8: 0
open System
open System.Runtime.InteropServices

[<Guid("936DA01F-9ABD-4d9d-80C7-02AF85C822A8")>]
type Example = class end

let guidAttr = 
    Attribute.GetCustomAttribute(typeof<Example>, typeof<GuidAttribute>) :?> GuidAttribute
    
let guidValue = 
    Guid.Parse guidAttr.Value

let values: obj[] =
    [| null; 16 
       Guid.Parse "01e75c83-c6f5-4192-b57e-7427cec5560d"
       guidValue |]

for value in values do
    try
        printfn $"{guidValue} and %A{value}: {guidValue.CompareTo value}"
    with :? ArgumentException ->
        printfn $"Cannot compare {guidValue} and %A{value}"

// The example displays the following output:
//    936da01f-9abd-4d9d-80c7-02af85c822a8 and <null>: 1
//    Cannot compare 936da01f-9abd-4d9d-80c7-02af85c822a8 and 16
//    936da01f-9abd-4d9d-80c7-02af85c822a8 and 01e75c83-c6f5-4192-b57e-7427cec5560d: 1
//    936da01f-9abd-4d9d-80c7-02af85c822a8 and 936da01f-9abd-4d9d-80c7-02af85c822a8: 0
Imports System.Runtime.InteropServices

<Guid("936DA01F-9ABD-4d9d-80C7-02AF85C822A8")>
Module Example
   Public Sub Main()
      Dim guidAttr As GuidAttribute = CType(Attribute.GetCustomAttribute(GetType(Example), 
                                                      GetType(GuidAttribute)), GuidAttribute)
      Dim guidValue As Guid = Guid.Parse(guidAttr.Value)
      Dim values() As Object = { Nothing, 16, 
                               Guid.Parse("01e75c83-c6f5-4192-b57e-7427cec5560d"),
                               guidValue }
      For Each value In values
         Try
            Console.WriteLine("{0} and {1}: {2}", guidValue, 
                              If(value Is Nothing, "null", value),
                              guidValue.CompareTo(value))
         Catch e As ArgumentException
            Console.WriteLine("Cannot compare {0} and {1}", guidValue,
                              If(value Is Nothing, "null", value))
         End Try                     
      Next                         
   End Sub
End Module
' The example displays the following output:
'    936da01f-9abd-4d9d-80c7-02af85c822a8 and null: 1
'    Cannot compare 936da01f-9abd-4d9d-80c7-02af85c822a8 and 16
'    936da01f-9abd-4d9d-80c7-02af85c822a8 and 01e75c83-c6f5-4192-b57e-7427cec5560d: 1
'    936da01f-9abd-4d9d-80c7-02af85c822a8 and 936da01f-9abd-4d9d-80c7-02af85c822a8: 0

Kommentarer

Parametern value måste vara null eller en instans av Guid. annars utlöses ett undantag. Alla instanser av Guid, oavsett dess värde, anses vara större än null.

Metoden CompareTo jämför GUID:erna som om de vore värden som tillhandahålls konstruktorn Guid enligt följande:

  • Den jämför Int32 värdena och returnerar ett resultat om de är ojämlika. Om de är lika med utför den nästa jämförelse.

  • Den jämför de första Int16 värdena och returnerar ett resultat om de är ojämlika. Om de är lika med utför den nästa jämförelse.

  • Den jämför de andra Int16 värdena och returnerar ett resultat om de är ojämlika. Om de är lika med utför den nästa jämförelse.

  • Om utför en byte-för-byte-jämförelse av de kommande åtta Byte värdena. När det stöter på det första ojämlika paret returneras resultatet. Annars returneras 0 för att indikera att de två Guid värdena är lika.

Om två GUID:er har samma värden för en komponent jämför metoden nästa komponent. När den hittar en komponent vars värden är ojämlika returneras resultatet.

Observera att de sista åtta byteen visas i strängrepresentationen av en Guid i omvänd ordning, från låg byte till hög byte. I strängrepresentationen Guid av värdet "01e75c83-c6f5-4192-b57e-7427cec5560d" är de sista åtta byteen "b57e-7427cec5560d".

Gäller för