Guid.CompareTo Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Porównuje to wystąpienie z określonym obiektem lub Guid zwraca wskazanie ich wartości względnych.
Przeciążenia
CompareTo(Guid) |
Porównuje to wystąpienie z określonym Guid obiektem i zwraca wskazanie ich wartości względnych. |
CompareTo(Object) |
Porównuje to wystąpienie z określonym obiektem i zwraca wskazanie ich względnych wartości. |
CompareTo(Guid)
- Źródło:
- Guid.cs
- Źródło:
- Guid.cs
- Źródło:
- Guid.cs
Porównuje to wystąpienie z określonym Guid obiektem i zwraca wskazanie ich wartości względnych.
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
Parametry
- value
- Guid
Obiekt, który ma zostać porównany z tym wystąpieniem.
Zwraca
Liczba ze znakiem wskazująca względne wartości tego wystąpienia i value
.
Wartość zwracana | Opis |
---|---|
Ujemna liczba całkowita | To wystąpienie jest mniejsze niż value .
|
Zero | To wystąpienie jest równe value .
|
Dodatnia liczba całkowita | To wystąpienie jest większe niż value .
|
Implementuje
Przykłady
Poniższy przykład wywołuje metodę , CompareTo(Guid) aby porównać wartość identyfikatora GUID z dwoma podobnymi wartościami identyfikatora GUID.
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
Uwagi
Metoda CompareTo porównuje identyfikatory GUID tak, jakby zostały podane do konstruktora Guid(Int32, Int16, Int16, Byte[]) w następujący sposób:
Porównuje UInt32 wartości i zwraca wynik, jeśli są one nierówne. Jeśli są równe, wykonuje następne porównanie.
Porównuje pierwsze UInt16 wartości i zwraca wynik, jeśli są one nierówne. Jeśli są równe, wykonuje następne porównanie.
Porównuje drugie UInt16 wartości i zwraca wynik, jeśli są one nierówne. Jeśli są równe, wykonuje następne porównanie.
Jeśli wykonuje porównanie bajtów po bajtach z następnych ośmiu Byte wartości. Gdy napotka pierwszą nierówną parę, zwraca wynik. W przeciwnym razie zwraca wartość 0, aby wskazać, że dwie Guid wartości są równe.
Należy pamiętać, że ostatnie osiem bajtów jest wyświetlane w ciągu reprezentującym odwrotną Guid kolejność od małej bajtu do wysokiej bajtu. Na przykład w ciągu reprezentacji Guid wartości "01e75c83-c6f5-4192-b57e-7427cec560d", ostatnie osiem bajtów to "b57e-7427cec5560d". Innymi słowy, ostatnie osiem bajtów jest porównywane na podstawie bajtów bajtów od lewej do prawej, począwszy od 0xb5.
Jeśli dwa identyfikatory GUID mają równe wartości dla składnika, metoda porównuje następny składnik. Po znalezieniu składnika, którego wartości są nierówne, zwraca wynik.
Ta metoda implementuje System.IComparable<T> interfejs i działa nieco lepiej niż Guid.CompareTo metoda, ponieważ nie musi konwertować parametru value
na Guid wartość.
Dotyczy
CompareTo(Object)
- Źródło:
- Guid.cs
- Źródło:
- Guid.cs
- Źródło:
- Guid.cs
Porównuje to wystąpienie z określonym obiektem i zwraca wskazanie ich względnych wartości.
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
Parametry
- value
- Object
Obiekt do porównania lub null
.
Zwraca
Liczba ze znakiem wskazująca względne wartości tego wystąpienia i value
.
Wartość zwracana | Opis |
---|---|
Ujemna liczba całkowita | To wystąpienie jest mniejsze niż value .
|
Zero | To wystąpienie jest równe value .
|
Dodatnia liczba całkowita | To wystąpienie jest większe niż value , lub value ma null wartość .
|
Implementuje
Wyjątki
value
nie jest .Guid
Przykłady
W poniższym przykładzie użyto atrybutu GuidAttribute do przypisania identyfikatora GUID do klasy. Pobiera wartość tego identyfikatora GUID przez wywołanie Attribute.GetCustomAttribute metody i przekazanie Value właściwości zwróconego GuidAttribute obiektu do Parse metody . Następnie porównuje ten identyfikator GUID z tablicą wartości.
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
Uwagi
Parametr value
musi mieć null
wartość lub wystąpienie Guidklasy ; w przeciwnym razie zgłaszany jest wyjątek. Każde wystąpienie klasy Guid, niezależnie od jego wartości, jest uznawane za większe niż null
.
Metoda CompareTo porównuje identyfikatory GUID tak, jakby zostały podane do konstruktora Guid w następujący sposób:
Porównuje Int32 wartości i zwraca wynik, jeśli są one nierówne. Jeśli są równe, wykonuje następne porównanie.
Porównuje pierwsze Int16 wartości i zwraca wynik, jeśli są one nierówne. Jeśli są równe, wykonuje następne porównanie.
Porównuje drugie Int16 wartości i zwraca wynik, jeśli są one nierówne. Jeśli są równe, wykonuje następne porównanie.
Jeśli wykonuje porównanie bajtów po bajtach z następnych ośmiu Byte wartości. Gdy napotka pierwszą nierówną parę, zwraca wynik. W przeciwnym razie zwraca wartość 0, aby wskazać, że dwie Guid wartości są równe.
Jeśli dwa identyfikatory GUID mają równe wartości dla składnika, metoda porównuje następny składnik. Po znalezieniu składnika, którego wartości są nierówne, zwraca wynik.
Należy pamiętać, że ostatnie osiem bajtów jest wyświetlane w ciągu reprezentującym odwrotną Guid kolejność od małej bajtu do wysokiej bajtu. Na przykład w ciągu reprezentacji Guid wartości "01e75c83-c6f5-4192-b57e-7427cec560d", ostatnie osiem bajtów to "b57e-7427cec5560d".