Cómo se Guid generado en C#?

  • La votación para cerrar como un duplicado de ¿Cómo son .NET 4 Guid generado?. Supongo que no es un duplicado perfecto de principio (especialmente desde ahora .NET Core existe, y no está claro si la respuesta en la víctima es cierto .NET Core que no sean Windows, sistemas operativos), pero en la actualidad esta pregunta no tiene una respuesta que viene incluso cerca de ser correcta y el vinculado engañar hace.
  • Estoy de acuerdo en que este no tiene una respuesta que viene cerca de ser correcta. Cualquier persona que viene aquí para información útil por favor vea stackoverflow.com/a/2757969/1739000
  • Ni es un duplicado. Esta pregunta se la hicieron los 6 meses anteriores a la que hace referencia y el otro es específico a la versión 4. ¿Cómo son .NET 4 Guid generado? tiene una sólida respuestas, pero uno realmente debería considerar la RFC 4122 para obtener el cuadro completo.
  • «Esta pregunta se la hicieron los 6 meses anteriores» – cierto, pero sin importancia. Es perfectamente legítimo para cerrar una vieja pregunta como un duplicado de una más reciente. Debemos ser sobre todo teniendo en cuenta que es la pregunta más útil para un usuario final a la hora de decidir el cierre de la dirección, la edad no importa.
  • Mientras que encontré su respuesta razonable, me quería para el ejercicio de una adecuada cantidad de escepticismo y encontrar esta respuesta de acuerdo con la suya así como los artículos en la sección de Ayuda que señale el mismo sentimiento. En esa nota, yo también voy a votar a este como un duplicado. 😉
InformationsquelleAutor Developer404 | 2009-12-11

7 Comentarios

  1. 10

    Pregunta Original:

    Cómo el Guid que se está generando es el identificador?? ¿Cómo va a ser la salida
    si yo uso el siguiente código Guid g = Guid.NewGuid();

    Si la salida va a ser la combinación de números y lettters o
    los números, por sí solas, no???

    Una .Net System.Guid es sólo un entero de 128 bits (16 bytes). Los números y las letras no tienen nada que ver con ella. Usted puede utilizar el método ToString() para ver las diferentes «legible» de las versiones de un Guid, que incluyen los números del 0 al 9 y las letras a-F (representando los valores hexadecimales), pero que todo depende de cómo usted desea a la salida de la misma.

    • Esta respuesta es incorrecta porque las respuestas a «¿Qué es el GUID?» pero la verdadera pregunta es «¿Cómo C# generar Guid?». Por lo tanto la respuesta proporcionada por @Justin es la respuesta correcta.
    • La pregunta original era bastante ambiguo porque de inglés roto. Sonaba como la petición tenía que ver con la representación de cadena del GUID. Usted puede mirar en la historia de la cuestión. Es discutible que el significado de la pregunta original fue cambiado, dado que las ediciones que se hicieron y el hecho de que esta respuesta fue aceptada por el autor de la pregunta. Voy a agregar a la pregunta original, a mi respuesta, en caso de que la pregunta que alguien viene a esta página.
    • Por favor, no se ofenda. Yo no escribo esto para culpar o hacer el ridículo. Usted puede editar su respuesta ahora no por nada, sino para mejorar la calidad de la misma aunque la pregunta fue impreciso en el primer lugar. El tipo de al lado que viene a través de un resultado de búsqueda obtendrá una mejor respuesta. Estoy seguro de que son la experiencia y el conocimiento, y no me refiero a menospreciar su respuesta.
  2. 45

    Hay un artículo muy bueno que aquí que describe cómo los Guid se generan, y en particular, por una subcadena de una guid no está garantizado para ser único.

    Basiclly un GUID es generado usando una combinación de

    • La dirección MAC de la máquina que se utiliza para generar el GUID (así Guid generado en diferentes máquinas son únicos, a menos que las direcciones MAC son re-utilizados)
    • Timestamp (así Guid generado en momentos diferentes en la misma máquina son únicos)
    • Extra «de emergencia uniquifier bits» (estos se utilizan para garantizar que los Guid se genera en casi exactamente el mismo tiempo en la misma máquina son únicos)
    • Un identificador para el algoritmo de (de modo que los Guid generado con un algoritmo diferente son únicos)

    Sin embargo, esta es sólo 1 particular algoritmo utilizado para la generación de Guid (aunque creo que es el utilizado por el .Net framework), y no es el utilizado por el .Net framework

    • .NET utiliza Windows’ algoritmo que crea un número aleatorio (versión 4 GUID) a partir de Windows 2000: stackoverflow.com/a/2757969/1059776
    • -1; esta respuesta, básicamente, torpedos toda su premisa con el enlace al final de la frase final y admite no ser una respuesta a la pregunta formulada.
  3. 1

    También hay otras formas de GUID, además de «aleatoria de 16 bytes», como se menciona en el RFC. Algunos productos de Microsoft (SQL Server, por ejemplo) puede generar estos «secuencial Guid», que se basan en una combinación de «dirección MAC de la primera tarjeta de red en el sistema + creciente contador basado en el sistema de tiempo».

    Estos «secuencial Guid» tiene la propiedad de siempre añadiendo nuevos registros para el «fin» de una tabla de base de datos cuando se utiliza como una base de datos de clave principal con un índice agrupado. Esto ayuda a prevenir la base de datos índice de la fragmentación y la división de la página.

    Si aleatoria de los Guid se utiliza como base de datos de claves primarias con los índices agrupados, los nuevos registros se inserta al azar en el «medio» de una tabla de una distribución física punto de vista, lo que conduce a la fragmentación de índices y parcialmente llenas las páginas de la base a lo largo del tiempo.

    Secuenciales Guid todavía le permite generar los Guid de forma independiente en varios sistemas, y estar seguro de que no va a ser ningún choque (una propiedad que usted no consigue el uso secuencial de los números enteros como claves primarias sin asignar «rangos» o diferentes semillas y los incrementos para cada sistema, que es una pesadilla administrativa en grandes aplicaciones distribuidas).

    • La pregunta sobre el GUID de generación en C#, y esta respuesta es irrelevante para que; -1.
  4. 0

    Detalles sobre Wikipedia y MSDN.

    En definitiva, un GUID es un aleatoria de 128 bits entero, pero nos formato utilizando dígitos hexadecimales para que sean fácilmente legibles (este es el 8-4-4-4-12 formato que ver). En cuanto a su generados, consulte el artículo vinculado de la Wikipedia.

    • -1; por el artículo de la Wikipedia vínculo, hay 5 diferentes estandarizada UUID generación de algoritmos. «ver el vinculado artículo de Wikipedia» lo que no responde a la pregunta de cómo C# en particular genera Uuid.
  5. 0

    Los bits de los GUID se descomponen así:

    • 60 bits de marca de hora
    • 48 bits de identificador de equipo
    • 14 bits de uniquifier
    • 6 bits se fija

    Total de 128 bits.

    • -1; esta respuesta no es cierto Guid generado con C#’s Guid.NewGuid en Windows, como se señaló en el stackoverflow.com/a/2757969/1709587. De hecho, hay buenas razones de privacidad para todos los idiomas/sistemas operativos/marcos para evitar el GUID de generación de algoritmo que se describe aquí (o al menos no lo uso como un defecto), el condenar a David L. Smith podría explicar a usted.
  6. -1

    Un Guid es un número único que tiene miles de millones de permutaciones y se compone de una mezcla de hexadecimal y los números en grupos. Y que es generado en base a los diferentes factores, tales como el tiempo, la versión de windows, los recursos del sistema, tales como discos duros, placas base, dispositivos y así sucesivamente. Un Guid es exclusivo. (Gracias ck!) No he visto una instancia donde hacer

    Guid g = nuevo Guid.NewGuid(); 
    Guid g = Guid.NewGuid(); /* Gracias Dave! */
    

    donde g tendrá el mismo valor en ejecuciones sucesivas.

    Es más comúnmente utilizado para los mutexes, un ejemplo sería crear una sola instancia de una aplicación y mediante el uso de un mutex con un guid garantiza la vida útil de la instancia de la aplicación.

    Incluso, en algunos casos, se utiliza en la base de datos, pero el método de uso es mal visto.

    • Un GUID NO está garantizado a ser única, es muy poco probable que genere dos la misma.
    • Usted no necesita (de hecho, no se puede utilizar) la nueva palabra clave si el uso de Guid.NewGuid()
    • necesito más café….ha editado este en consecuencia…meh! 🙂

Dejar respuesta

Please enter your comment!
Please enter your name here