2011-10-20 9 views
18

Ho un codice che sostituisce il trattino con stringhe vuote in un GUID.È consigliabile rimuovere il trattino da un GUID?

Replace(System.Guid.NewGuid.ToString, "-", "") 

Rimuovere l'unicità del guid?

Inoltre, qualcuno può confermare anche questo?

Stiamo memorizzando GUID nel nostro database come char (32). Va bene? Poiché abbiamo utenti internazionali in fusi orari diversi, siamo preoccupati che la lunghezza del personaggio possa superare i 32. Grazie.

+11

Proprio così, lo sapevi che invece di sostituire il carattere "-", usi il ToString del Guid? Basta usare il formato N: System.Guid.NewGuid.ToString ("N") –

risposta

23

No, l'unicità di Guid è garantita.
I trattini sono solo per la leggibilità: internamente Guid è composto da 16 byte.
È possibile vedere Microsoft e Wikipedia per ulteriori dettagli.
Date un'occhiata a costruttori anche:

public Guid(int a, short b, short c, byte[] d); 
public Guid(int a, short b, short c, byte d, 
      byte e, byte f, byte g, byte h, 
      byte i, byte 
public Guid(uint a, ushort b, ushort c, byte d, 
      byte e, byte f, byte g, byte h, 
      byte i, byte j, byte k); 
+3

+1, per una risposta semplice –

+0

Grazie per il ritorno stiamo memorizzando un Guid nel database come char (32). Ciò sarebbe possibile a causa del sito web internazionale o di un fuso orario diverso, se la lunghezza del carattere supera la dimensione 32? – Salman

50

I trattini sono sempre nello stesso posto, quindi no, non ridurrà l'unicità.

System.Guid.NewGuid().ToString("N"); 

genererà un GUID senza trattini, come in questo documentation

+0

+1 per insegnare OP questa nuova sintassi :) – Marco

+0

Bello, molto, molto bello. – fuzz

4

I trattini non fanno parte del GUID stesso. Sono solo parte di una rappresentazione comune di guids. Quindi la rimozione non cambierà il valore Guid stesso.

Problemi correlati