Programmering

Hvordan jobbe med GUIDer i C # 8

Når du arbeider i applikasjoner, kan det hende du ofte må bruke GUID-er (Globally Unique Identifiers). Unike identifikatorer som primærnøkler i en SQL-database sørger for at viktige objekter som kunder og fakturaer ikke dupliseres eller overskrives. Uten unike identifikatorer kunne vi ikke forhindre tap av data eller sikre dataintegriteten til applikasjonene våre.

En globalt unik identifikator eller GUID representerer et gigantisk identifikasjonsnummer - et tall som er så stort at det matematisk garanteres å være unikt ikke bare i et enkelt system som en database, men på tvers av flere systemer eller distribuerte applikasjoner. Denne artikkelen diskuterer hvorfor vi trenger GUID-er og hvordan vi kan jobbe med GUID-er i C # 8.0.

For å jobbe med kodeeksemplene som er gitt i denne artikkelen, bør du ha Visual Studio 2019 installert på systemet ditt. Hvis du ikke allerede har en kopi, kan du laste ned Visual Studio 2019 her.

Opprett et konsollapplikasjonsprosjekt i Visual Studio

Først og fremst, la oss lage et .NET Core Console Application-prosjekt i Visual Studio. Forutsatt at Visual Studio 2019 er installert i systemet ditt, følger du trinnene som er beskrevet nedenfor for å opprette et nytt .NET Core Console Application-prosjekt i Visual Studio.

  1. Start Visual Studio IDE.
  2. Klikk på "Opprett nytt prosjekt."
  3. I vinduet "Opprett nytt prosjekt" velger du "Konsollapp (.NET Core)" fra listen over maler som vises.
  4. Klikk på Neste.
  5. I vinduet “Konfigurer ditt nye prosjekt” som vises, angir du navnet og stedet for det nye prosjektet.
  6. Klikk på Opprett.

Dette vil opprette et nytt .NET Core-konsollapplikasjonsprosjekt i Visual Studio 2019. Vi bruker dette prosjektet til å jobbe med GUID-er i de påfølgende delene av denne artikkelen. Vær oppmerksom på at vi bruker C # 8 her, så det kan være lurt å oppdatere språkversjonen i prosjektet ditt.

Hvorfor trenger vi GUIDer?

Tenk deg at du har en salgsapplikasjon som er tilgjengelig i både online og offline modus på mobilapplikasjonen. Anta at applikasjonen din gir ID-nummer som genereres automatisk fra 1. Hvordan kan du slå sammen de frakoblede dataene når tilkoblingen er gjenopprettet? Hva om ID-numrene dine er generert i begge modusene? Det kan være kollisjoner, ikke sant? Hvordan vil du håndtere dupliserte ID-nummer? Du kan definitivt takle dette, men du må skrive mye kode - som ikke er det du vil gjøre.

Her kommer GUIDer til unnsetning. En GUID er et gigantisk tall - 128 bits langt - og er nesten unikt. Hvorfor nesten unikt? Hvorfor kan vi ikke si at det er unikt? I utgangspunktet er antallet mulige GUID-er så stort at sjansene for kollisjon er ekstremt minimale. Likevel er sjansen for kollisjon ikke null.

Du kan dra nytte av GUID-er ved å gjøre dem til hovednøklene for databasetabellene. Bruk av GUID vil til og med hjelpe deg med å unngå sammenslåingskonflikter når du slår sammen to eller flere databaser. En annen fordel med GUID er at du kan generere dem offline - du trenger ikke å være koblet til nettverket eller internett.

Hvordan er GUIDer representert?

Følgende er et eksempel på en GUID. Merk at en GUID vanligvis er 128 bits lang og er representert i heksadesimal.

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

En GUID er organisert som en veldefinert sekvens med 32 heksadesimale sifre gruppert i biter av 8-4-4-4-12. Derfor kan du ha maksimalt 2 ^ 128 GUIDer.

Opprett en GUID i C # 8

I denne delen lærer vi hvordan vi kan jobbe med GUID-er i C #. Du kan opprette GUID-er i .NET ved hjelp av Guid-strukturen som er tilgjengelig som en del av systemnavnet. Her er den enkleste måten å generere en GUID i C #. Skriv følgende kode i Main () -metoden til Program.cs-filen i prosjektet du opprettet tidligere.

Guid obj = Guid.NewGuid ();

Console.WriteLine ("Den nyopprettede guiden er:" + obj.ToString ());

Console.ReadKey ();

Opprett en tom GUID i C # 8

Siden Guid er en struktur, er det en verditype, og du kan derfor ikke sette den til null. For å lage tomme guider kan du skrive følgende kode.

Veilednings-id = ny veiledning ();

hvis (id == Guid.Empty)

Console.WriteLine ("Veiledningen er tom");

En veiledningstom har en verdi på 00000000-0000-0000-0000-000000000000. Du kan dra nytte av en tom GUID for å sammenligne den med et annet GUID-objekt for å avgjøre om det ikke er null. Følgende kodebit illustrerer dette.

hvis (guid! = Guid.Empty) {

// GUID-objektet inneholder verdier som ikke er null

}

ellers

{

// GUID-objektet er tomt

Her er en enkel utvidelsesmetode som avgjør om en GUID er Guid.Empty.

offentlig statisk bool IsNullOrEmpty (denne veiledningen)

{

retur (guid == Guid.Empty);

Du kan til og med sjekke om din nullable GUID er null ved å bruke følgende utvidelsesmetode.

offentlig statisk bool IsNullOrEmpty (denne guiden? guiden)

{

hvis (guid.HasValue)

hvis (guid == standard (veiledning))

returner sant;

returner falsk;

}

Merk at standard (Guid) er den samme som Guid.Empty.

Konverter en GUID til en streng i C # 8

Du kan til og med konvertere en GUID til en streng. Følgende kodebit viser hvordan du kan konvertere en tom GUID til en streng.

streng str = Guid.Empty.ToString ();

Console.WriteLine (str);

Merk at det er en viktig advarsel for bruk av GUID-er: Du kan ha kollisjoner. Legg også merke til at GUID-er tar litt plass, og at de ikke genereres i sekvensiell rekkefølge. Du kan imidlertid gjøre GUIDene dine unike programmatisk ved å bruke et 128-biters heltall som kan vises med to ULong-verdier og øke den sekvensielt.

Det kan være lurt å konvertere en GUID til en streng ofte i applikasjonene dine. Du må kanskje gjøre dette for å binde GUID-data til datakontrollene dine eller for å overføre GUID til brukergrensesnittet. Det kan også være lurt å konvertere et GUID-objekt til en streng for å formatere GUID-data i henhold til dine behov.

Du kan opprette GUIDer på flere forskjellige måter. Disse inkluderer tilfeldige, tidsbaserte, maskinvarebaserte og innholdsbaserte (dvs. basert på en MD5- eller SHA-1-hashverdi for et stykke data). Jeg vil lede deg gjennom alle disse måtene og andre avanserte funksjoner i GUID i en fremtidig artikkel her.

Hvordan gjøre mer i C #

  • Når skal jeg bruke en abstrakt klasse vs. grensesnitt i C #
  • Hvordan jobbe med AutoMapper i C #
  • Hvordan bruke lambdauttrykk i C #
  • Hvordan jobbe med Action-, Func- og Predicate-delegater i C #
  • Hvordan jobbe med delegater i C #
  • Slik implementerer du en enkel logger i C #
  • Hvordan jobbe med attributter i C #
  • Hvordan jobbe med log4net i C #
  • Slik implementerer du mønsteret for depotdesign i C #
  • Hvordan jobbe med refleksjon i C #
  • Hvordan jobbe med filsystemwatcher i C #
  • Hvordan utføre lat initialisering i C #
  • Hvordan jobbe med MSMQ i C #
  • Hvordan jobbe med utvidelsesmetoder i C #
  • Hvordan vi lambdauttrykk i C #
  • Når skal du bruke det flyktige nøkkelordet i C #
  • Slik bruker du avkastningsnøkkelordet i C #
  • Hvordan implementere polymorfisme i C #
  • Hvordan lage din egen oppgaveplanlegger i C #
  • Hvordan jobbe med RabbitMQ i C #
  • Hvordan jobbe med en tuple i C #
  • Utforske virtuelle og abstrakte metoder i C #
$config[zx-auto] not found$config[zx-overlay] not found