So arbeiten Sie mit GUIDs in C # 8

Wenn Sie in Anwendungen arbeiten, müssen Sie möglicherweise häufig GUIDs (Global Unique Identifiers) verwenden. Eindeutige Bezeichner wie Primärschlüssel in einer SQL-Datenbank stellen sicher, dass wichtige Objekte wie Kunden und Rechnungen nicht dupliziert oder überschrieben werden. Ohne eindeutige Kennungen könnten wir keinen Datenverlust verhindern oder die Datenintegrität unserer Anwendungen sicherstellen. 

Ein global eindeutiger Identifikator oder eine GUID stellt eine gigantische Identifikationsnummer dar - eine Nummer, die so groß ist, dass mathematisch garantiert wird, dass sie nicht nur in einem einzelnen System wie einer Datenbank, sondern über mehrere Systeme oder verteilte Anwendungen hinweg eindeutig ist. Dieser Artikel beschreibt, warum wir GUIDs benötigen und wie wir mit GUIDs in C # 8.0 arbeiten können.

Um mit den in diesem Artikel bereitgestellten Codebeispielen arbeiten zu können, muss Visual Studio 2019 auf Ihrem System installiert sein. Wenn Sie noch keine Kopie haben, können Sie Visual Studio 2019 hier herunterladen. 

Erstellen Sie ein Konsolenanwendungsprojekt in Visual Studio

Zunächst erstellen wir ein .NET Core Console-Anwendungsprojekt in Visual Studio. Angenommen, Visual Studio 2019 ist auf Ihrem System installiert, führen Sie die folgenden Schritte aus, um ein neues .NET Core Console-Anwendungsprojekt in Visual Studio zu erstellen.

  1. Starten Sie die Visual Studio-IDE.
  2. Klicken Sie auf "Neues Projekt erstellen".
  3. Wählen Sie im Fenster "Neues Projekt erstellen" aus der Liste der angezeigten Vorlagen "Konsolen-App (.NET Core)" aus.
  4. Weiter klicken.
  5. Geben Sie im nächsten Fenster "Konfigurieren Sie Ihr neues Projekt" den Namen und den Speicherort für das neue Projekt an.
  6. Klicken Sie auf Erstellen.

Dadurch wird ein neues .NET Core-Konsolenanwendungsprojekt in Visual Studio 2019 erstellt. In den folgenden Abschnitten dieses Artikels wird dieses Projekt für die Arbeit mit GUIDs verwendet. Beachten Sie, dass wir hier C # 8 verwenden. Daher möchten Sie möglicherweise die Sprachversion in Ihrem Projekt aktualisieren.

Warum brauchen wir GUIDs?

Stellen Sie sich vor, Sie haben eine Point-of-Sale-Anwendung, die sowohl im Online- als auch im Offline-Modus auf Ihrer mobilen Anwendung verfügbar ist. Angenommen, Ihre Anwendung enthält ID-Nummern, die ab 1 automatisch generiert werden. Wie können Sie die Offlinedaten zusammenführen, wenn die Konnektivität wiederhergestellt ist? Was ist, wenn Ihre ID-Nummern in beiden Modi generiert wurden? Es kann zu Kollisionen kommen, oder? Wie würden Sie mit doppelten ID-Nummern umgehen? Sie könnten definitiv damit umgehen, aber Sie müssten viel Code schreiben - was Sie nicht wollen.

Hier kommen GUIDs zur Rettung. Eine GUID ist eine gigantische Zahl - 128 Bit lang - und fast einzigartig. Warum fast einzigartig? Warum können wir nicht sagen, dass es einzigartig ist? Grundsätzlich ist die Anzahl der möglichen GUIDs so groß, dass die Kollisionswahrscheinlichkeit äußerst gering ist. Trotzdem ist die Kollisionswahrscheinlichkeit nicht Null. 

Sie können GUIDs nutzen, indem Sie sie zu Primärschlüsseln für Ihre Datenbanktabellen machen. Die Verwendung von GUIDs hilft Ihnen sogar dabei, Zusammenführungskonflikte zu vermeiden, wenn Sie zwei oder mehr Datenbanken zusammenführen. Ein weiterer Vorteil von GUIDs besteht darin, dass Sie sie offline generieren können - Sie müssen nicht mit dem Netzwerk oder dem Internet verbunden sein.

Wie werden GUIDs dargestellt?

Das Folgende ist ein Beispiel für eine GUID. Beachten Sie, dass eine GUID normalerweise 128 Bit lang ist und hexadezimal dargestellt wird.

eaa24756-3fac-4e46-b4bb-074ff4f5b846

Eine GUID ist als genau definierte Folge von 32 hexadezimalen Ziffern organisiert, die in Blöcke von 8-4-4-4-12 gruppiert sind. Daher können Sie maximal 2 ^ 128 GUIDs haben.

Erstellen Sie eine GUID in C # 8

In diesem Abschnitt erfahren Sie, wie wir mit GUIDs in C # arbeiten können. Sie können GUIDs in .NET mithilfe der Guid-Struktur erstellen, die als Teil des System-Namespace verfügbar ist. Hier ist der einfachste Weg, eine GUID in C # zu generieren. Schreiben Sie den folgenden Code in die Main () -Methode der Program.cs-Datei in dem zuvor erstellten Projekt.

Guid obj = Guid.NewGuid ();

Console.WriteLine ("Die neu erstellte Guid lautet:" + obj.ToString ());

Console.ReadKey ();

Erstellen Sie eine leere GUID in C # 8

Da Guid eine Struktur ist, handelt es sich um einen Werttyp, und Sie können ihn daher nicht auf null setzen. Um leere Guids zu erstellen, können Sie den folgenden Code schreiben.

Guid id = new Guid ();

if (id == Guid.Empty)

Console.WriteLine ("Die Guid ist leer");

Ein Guid.Empty hat den Wert 00000000-0000-0000-0000-000000000000. Sie können eine leere GUID verwenden, um sie mit einem anderen GUID-Objekt zu vergleichen und festzustellen, ob sie nicht Null ist. Das folgende Codefragment veranschaulicht dies. 

if (guid! = Guid.Empty) { 

  // Das GUID-Objekt enthält Werte ungleich Null

}}

sonst

{

  // Das GUID-Objekt ist leer

}} 

Hier ist eine einfache Erweiterungsmethode, die bestimmt, ob eine GUID Guid.Empty ist. 

public static bool IsNullOrEmpty (diese Guid-Anleitung)

{

  return (guid == Guid.Empty);

}} 

Mit der folgenden Erweiterungsmethode können Sie sogar überprüfen, ob Ihre nullfähige GUID null ist. 

public static bool IsNullOrEmpty (diese Guid? guid)

{

  if (guid.HasValue)

    if (guid == default (Guid))

        return true;

    falsch zurückgeben;

}}

Beachten Sie, dass die Standardeinstellung (Guid) mit Guid.Empty identisch ist.

Konvertieren Sie eine GUID in eine Zeichenfolge in C # 8

Sie können sogar eine GUID in eine Zeichenfolge konvertieren. Das folgende Codeausschnitt zeigt, wie Sie eine leere GUID in eine Zeichenfolge konvertieren können.

Zeichenfolge str = Guid.Empty.ToString ();

Console.WriteLine (str);

Beachten Sie, dass die Verwendung von GUIDs eine wichtige Einschränkung darstellt: Möglicherweise treten Kollisionen auf. Beachten Sie auch, dass GUIDs etwas Platz beanspruchen und nicht in sequentieller Reihenfolge generiert werden. Sie können Ihre GUIDs jedoch programmgesteuert eindeutig machen, indem Sie eine 128-Bit-Ganzzahl verwenden, die mit zwei ULong-Werten dargestellt und nacheinander erhöht werden kann. 

Möglicherweise möchten Sie eine GUID in Ihren Anwendungen häufig in eine Zeichenfolge konvertieren. Möglicherweise müssen Sie dies tun, um GUID-Daten an Ihre Datensteuerelemente zu binden oder die GUID an die Benutzeroberfläche zu übergeben. Möglicherweise möchten Sie sogar ein GUID-Objekt in eine Zeichenfolge konvertieren, um die GUID-Daten gemäß Ihren Anforderungen zu formatieren.

Sie können GUIDs auf verschiedene Arten erstellen. Dazu gehören zufällige, zeitbasierte, hardwarebasierte und inhaltsbasierte Daten (dh basierend auf einem MD5- oder SHA-1-Hashwert eines Datenelements). Ich werde Sie in einem zukünftigen Artikel hier durch all diese Wege und andere erweiterte Funktionen von GUIDs führen.

Wie man mehr in C # macht

  • Wann wird eine abstrakte Klasse im Vergleich zur Schnittstelle in C # verwendet?
  • So arbeiten Sie mit AutoMapper in C #
  • Verwendung von Lambda-Ausdrücken in C #
  • So arbeiten Sie mit Action-, Func- und Predicate-Delegaten in C #
  • So arbeiten Sie mit Delegierten in C #
  • So implementieren Sie einen einfachen Logger in C #
  • So arbeiten Sie mit Attributen in C #
  • So arbeiten Sie mit log4net in C #
  • So implementieren Sie das Repository-Entwurfsmuster in C #
  • Wie man mit Reflexion in C # arbeitet
  • So arbeiten Sie mit dem Dateisystemwatcher in C #
  • So führen Sie eine verzögerte Initialisierung in C # durch
  • So arbeiten Sie mit MSMQ in C #
  • So arbeiten Sie mit Erweiterungsmethoden in C #
  • Wie wir Lambda-Ausdrücke in C #
  • Wann wird das flüchtige Schlüsselwort in C # verwendet?
  • Verwendung des Schlüsselwortsield in C #
  • So implementieren Sie Polymorphismus in C #
  • So erstellen Sie Ihren eigenen Taskplaner in C #
  • So arbeiten Sie mit RabbitMQ in C #
  • So arbeiten Sie mit einem Tupel in C #
  • Erkundung virtueller und abstrakter Methoden in C #