Как да работите с GUID в C # 8

Когато работите в приложения, често може да се наложи да използвате глобални уникални идентификатори (GUID). Уникални идентификатори като първични ключове в SQL база данни гарантират, че важни обекти като клиенти и фактури не се дублират или презаписват. Без уникални идентификатори не бихме могли да предотвратим загуба на данни или да осигурим целостта на данните на нашите приложения. 

Глобално уникален идентификатор или GUID представлява гигантски идентификационен номер - номер толкова голям, че математически е гарантирано, че е уникален не само в една система като база данни, но в множество системи или разпределени приложения. Тази статия разглежда защо се нуждаем от GUID и как можем да работим с GUID в C # 8.0.

За да работите с примерите за кодове, предоставени в тази статия, трябва да имате Visual Studio 2019 инсталиран във вашата система. Ако все още нямате копие, можете да изтеглите Visual Studio 2019 тук. 

Създайте проект за конзолно приложение в Visual Studio

Първо, нека създадем проект за приложение на .NET Core Console в Visual Studio. Ако приемем, че Visual Studio 2019 е инсталиран във вашата система, следвайте стъпките, описани по-долу, за да създадете нов проект за приложение на .NET Core Console в Visual Studio.

  1. Стартирайте Visual Studio IDE.
  2. Кликнете върху „Създаване на нов проект“.
  3. В прозореца „Създаване на нов проект“ изберете „Console App (.NET Core)“ от показания списък с шаблони.
  4. Щракнете върху Напред.
  5. В показания след това прозорец „Конфигуриране на вашия нов проект“ посочете името и местоположението на новия проект.
  6. Щракнете върху Създаване.

Това ще създаде нов проект за приложение на конзола .NET Core в Visual Studio 2019. Ще използваме този проект за работа с GUID в следващите раздели на тази статия. Имайте предвид, че тук ще използваме C # 8, така че може да искате да актуализирате езиковата версия във вашия проект.

Защо се нуждаем от GUID?

Представете си, че имате приложение за продажба на място, което е достъпно както в онлайн, така и в офлайн режим на вашето мобилно приложение. Да предположим, че вашето приложение предоставя идентификационни номера, които се генерират автоматично, започвайки от 1. Как можете да обедините офлайн данните, когато връзката бъде възстановена? Ами ако вашите идентификационни номера са генерирани и в двата режима? Може да има сблъсъци, нали? Как бихте се справили с дублиращи се идентификационни номера? Определено бихте могли да се справите с това, но ще трябва да напишете много код - което не е това, което искате да направите.

Ето къде GUID идват на помощ. GUID е гигантско число - дълго 128 бита - и е почти уникално. Защо почти уникален? Защо не можем да кажем, че е уникален? По принцип броят на възможните GUID е толкова голям, че шансовете за сблъсък са изключително минимални. Въпреки това шансовете за сблъсък не са нула. 

Можете да се възползвате от GUID, като ги направите първични ключове за таблиците на вашата база данни. Използването на GUID дори ще ви помогне да избегнете конфликти на сливане, когато обединявате две или повече бази данни. Друго предимство на GUID е, че можете да ги генерирате офлайн - не е необходимо да сте свързани към мрежата или интернет.

Как са представени GUID?

Следва пример за GUID. Имайте предвид, че GUID обикновено е с дължина 128 бита и е представен в шестнадесетичен формат.

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

GUID е организиран като добре дефинирана последователност от 32 шестнадесетични цифри, групирани в парчета от 8-4-4-4-12. Следователно можете да имате максимум 2 ^ 128 GUID.

Създайте GUID в C # 8

В този раздел ще научим как можем да работим с GUID в C #. Можете да създадете GUID в .NET, като използвате структурата на Guid, налична като част от системното пространство на имената. Ето най-лесният начин да генерирате GUID в C #. Напишете следния код в метода Main () на файла Program.cs в проекта, който сте създали по-рано.

Guid obj = Guid.NewGuid ();

Console.WriteLine ("Новосъздаденото ръководство е:" + obj.ToString ());

Console.ReadKey ();

Създайте празен GUID в C # 8

Тъй като Guid е структура, това е тип стойност и следователно не можете да го зададете на null. За да създадете празни ръководства, можете да напишете следния код.

Guid id = new Guid ();

ако (id == Guid.Empty)

Console.WriteLine ("Guid е празен");

Guid.Empty има стойност 00000000-0000-0000-0000-000000000000. Можете да се възползвате от празен GUID, за да го сравните с друг GUID обект, за да определите дали той не е нулев. Следният кодов фрагмент илюстрира това. 

if (guide! = Guid.Empty) { 

  // Обектът GUID съдържа ненулеви стойности

}

друго

{

  // Обектът GUID е празен

Ето един прост метод за разширение, който определя дали GUID е Guid.Empty. 

публичен статичен bool IsNullOrEmpty (това ръководство)

{

  връщане (guide == Guid.Empty);

Можете дори да проверите дали нулиращият ви GUID е нулев, като използвате следния метод за разширение. 

публичен статичен bool IsNullOrEmpty (този Guid? guide)

{

  if (guide.HasValue)

    ако (guide == по подразбиране (Guid))

        връщане вярно;

    върнете false;

}

Имайте предвид, че по подразбиране (Guid) е същото като Guid.Empty.

Конвертирайте GUID в низ в C # 8

Можете дори да конвертирате GUID в низ. Следният кодов фрагмент показва как можете да конвертирате празен GUID в низ.

низ str = Guid.Empty.ToString ();

Console.WriteLine (str);

Имайте предвид, че има една основна забележка при използването на GUID: Може да имате сблъсъци. Имайте предвид също, че GUID заемат малко място и те не се генерират в последователен ред. Можете обаче да направите своите GUID уникални програмно, като използвате 128-битово цяло число, което може да бъде представено с помощта на две ULong стойности и да го увеличавате последователно. 

Може да искате да конвертирате GUID в низ често във вашите приложения. Може да се наложи да направите това, за да свържете GUID данни с вашите контроли за данни или да предадете GUID на потребителския интерфейс. Може дори да искате да конвертирате GUID обект в низ, за ​​да форматирате GUID данните според вашите изисквания.

Можете да създавате GUID по няколко различни начина. Те включват произволни, базирани на време, базирани на хардуер и съдържание (т.е. базирани на хеширана стойност на MD5 или SHA-1 на част от данните). Ще ви преведа през всички тези начини и други разширени функции на GUID в следваща статия тук.

Как да направите повече в C #

  • Кога да се използва абстрактен клас срещу интерфейс в C #
  • Как да работя с AutoMapper в C #
  • Как да използвам ламбда изрази в C #
  • Как да работя с Action, Func и Predicate делегати в C #
  • Как да работя с делегати в C #
  • Как да внедрите прост регистратор в C #
  • Как да работя с атрибути в C #
  • Как да работя с log4net в C #
  • Как да приложим шаблона за проектиране на хранилището в C #
  • Как да работя с отражение в C #
  • Как да работя с файлова система за наблюдение в C #
  • Как да извършите мързелива инициализация в C #
  • Как да работите с MSMQ в C #
  • Как да работя с методи за разширение в C #
  • Как да използваме ламбда изрази в C #
  • Кога да се използва летливата ключова дума в C #
  • Как да използвам ключовата дума yield в C #
  • Как да приложим полиморфизъм в C #
  • Как да изградите свой собствен планировчик на задачи в C #
  • Как да работя с RabbitMQ в C #
  • Как да работите с кортеж в C #
  • Проучване на виртуални и абстрактни методи в C #