Guid.CompareTo Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Compara esta instancia con un objeto especificado o con un objeto Guid, y devuelve una indicación de sus valores relativos.
Sobrecargas
CompareTo(Guid) |
Compara esta instancia con un objeto Guid especificado y devuelve una indicación de los valores relativos. |
CompareTo(Object) |
Compara esta instancia con un objeto especificado y devuelve una indicación de los valores relativos. |
CompareTo(Guid)
- Source:
- Guid.cs
- Source:
- Guid.cs
- Source:
- Guid.cs
Compara esta instancia con un objeto Guid especificado y devuelve una indicación de los valores relativos.
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
Parámetros
- value
- Guid
Un objeto que se va a comparar con esta instancia.
Devoluciones
Número con signo que indica los valores relativos de esta instancia y value
.
Valor devuelto | Descripción |
---|---|
Un entero negativo | Esta instancia es menor que value .
|
Cero | Esta instancia es igual a value .
|
Un entero positivo. | Esta instancia es mayor que value .
|
Implementaciones
Ejemplos
En el ejemplo siguiente se llama al CompareTo(Guid) método para comparar un valor GUID con dos valores GUID similares.
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
Comentarios
El CompareTo método compara los GUID como si fueran valores proporcionados al Guid(Int32, Int16, Int16, Byte[]) constructor, como se indica a continuación:
Compara los UInt32 valores y devuelve un resultado si son diferentes. Si son iguales, realiza la siguiente comparación.
Compara los primeros UInt16 valores y devuelve un resultado si son diferentes. Si son iguales, realiza la siguiente comparación.
Compara los segundos UInt16 valores y devuelve un resultado si son diferentes. Si son iguales, realiza la siguiente comparación.
Si realiza una comparación de bytes de bytes de los ocho Byte valores siguientes. Cuando encuentra el primer par desigual, devuelve el resultado. De lo contrario, devuelve 0 para indicar que los dos Guid valores son iguales.
Tenga en cuenta que los ocho bytes finales aparecen en la representación de cadena de un Guid en orden inverso, de un byte bajo a un byte alto. Por ejemplo, en la representación de cadena del Guid valor "01e75c83-c6f5-4192-b57e-7427cec5560d", los ocho bytes finales son "b57e-7427cec5560d". En otras palabras, los ocho bytes finales se comparan con un byte de izquierda a derecha empezando por 0xb5.
Si dos GUID tienen valores iguales para un componente, el método compara el siguiente componente. Cuando encuentra un componente cuyos valores son distintos, devuelve el resultado.
Este método implementa la System.IComparable<T> interfaz y funciona ligeramente mejor que el Guid.CompareTo método porque no tiene que convertir el value
parámetro en un Guid valor.
Se aplica a
CompareTo(Object)
- Source:
- Guid.cs
- Source:
- Guid.cs
- Source:
- Guid.cs
Compara esta instancia con un objeto especificado y devuelve una indicación de los valores relativos.
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
Parámetros
- value
- Object
Objeto que se va a comparar o null
.
Devoluciones
Número con signo que indica los valores relativos de esta instancia y value
.
Valor devuelto | Descripción |
---|---|
Un entero negativo | Esta instancia es menor que value .
|
Cero | Esta instancia es igual a value .
|
Un entero positivo. | Esta instancia es mayor que value o bien value es null .
|
Implementaciones
Excepciones
value
no es un Guid.
Ejemplos
En el ejemplo siguiente se usa el GuidAttribute atributo para asignar un GUID a una clase . Recupera el valor de este GUID llamando al Attribute.GetCustomAttribute método y pasando la Value propiedad del objeto devuelto GuidAttribute al Parse método . A continuación, compara ese GUID con una matriz de valores.
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
Comentarios
El value
parámetro debe ser null
o una instancia de Guid; de lo contrario, se produce una excepción. Cualquier instancia de Guid, independientemente de su valor, se considera mayor que null
.
El CompareTo método compara los GUID como si fueran valores proporcionados al Guid constructor, como se indica a continuación:
Compara los Int32 valores y devuelve un resultado si son diferentes. Si son iguales, realiza la siguiente comparación.
Compara los primeros Int16 valores y devuelve un resultado si son diferentes. Si son iguales, realiza la siguiente comparación.
Compara los segundos Int16 valores y devuelve un resultado si son diferentes. Si son iguales, realiza la siguiente comparación.
Si realiza una comparación de bytes de bytes de los ocho Byte valores siguientes. Cuando encuentra el primer par desigual, devuelve el resultado. De lo contrario, devuelve 0 para indicar que los dos Guid valores son iguales.
Si dos GUID tienen valores iguales para un componente, el método compara el siguiente componente. Cuando encuentra un componente cuyos valores son distintos, devuelve el resultado.
Tenga en cuenta que los ocho bytes finales aparecen en la representación de cadena de un Guid en orden inverso, de un byte bajo a un byte alto. Por ejemplo, en la representación de cadena del Guid valor "01e75c83-c6f5-4192-b57e-7427cec5560d", los ocho bytes finales son "b57e-7427cec5560d".