2009-05-31 4 views
3

So habe ich dieseWas ist die einfachste eindeutige Kennung, die in .Net verfügbar ist?

public class Foo 
{ 
    public int UniqueIdentifier; 

    public Foo() 
    { 
     UniqueIdentifier = ???? 
    }  
} 

Wie kann ich eine völlig einzigartige Nummer?

Danke!

+2

viele weitere Details benötigt: Wie einzigartig soll die Nummer sein? Wie viele IDs brauchst du? kann es inkrementell sein (0,1,2,3 ...)? kann es erneut zählen, wenn die App geschlossen und wieder geöffnet wird? Werden die IDs in einer einzelnen Maschine erstellt und verwendet oder können sie aus der Ferne erstellt werden (Kommunikation zwischen Maschinen/Prozessen)? – Lucas

+0

Es gibt keine "völlig eindeutige Zahl", es sei denn, Sie erlauben willkürliche (d. H. Unendliche) Skalierung und Genauigkeit ... –

+2

Nonsense Marc. Wie wäre es mit zwölf? Zwölf ist sicherlich einzigartig! Es gibt nur eine einzige Nummer, die "Zwölf" genannt wird. Glaub mir nicht? Versuchen Sie, eine andere Zahl zu finden, die gleich zwölf ist, aber _ ist nicht zwölf_. Kann es nicht tun, oder? Das liegt daran, dass zwölf _unique_ ist. :) –

Antwort

17
System.Guid guid = System.Guid.NewGuid(); 
String id = guid.ToString(); 
+1

Es gibt auch einige Parameter, die Sie an guid.ToString() übergeben können, um die Art der Zeichenfolge zu beeinflussen, die Sie zurück erhalten. –

2

Obwohl kein int, ein Verfahren zum Erzeugen eindeutige Kennungen verwendet allgemein GUIDs. Sie können Guid.NewGuid() verwenden, um einen zu generieren.

Es gibt verschiedene Konvertierungsmethoden, einschließlich Byte-Arrays und Strings. Weitere Informationen zu GUIDs finden Sie unter Wikipedia.

Viel Glück.

0

Verwenden Sie die Struktur Guid, wie diese.

public class Foo 
{ 
    public readonly Guid UniqueIdentifier; 

    public Foo() 
    { 
     UniqueIdentifier = Guid.NewGuid(); 
    }  
} 
+0

HashCode ist lediglich ein Hash für ein Objekt und ist NICHT immer eindeutig. Manchmal ist es eine Memadresse, manchmal sind es andere Dinge. Aber Punkt ist, es ist nie garantiert, sogar mit einer bestimmten CLR oder Java VM. – TheSoftwareJedi

+0

Sie haben Recht; Das habe ich nicht gesehen. Entfernt – SLaks