Utvidelsesmetoder i C# forklart

Utvidelsesmetoder i C# forklart
Utvidelsesmetoder er et kraftig trekk ved C# som gjør det mulig for utviklere å utvide eksisterende typer med ny funksjonalitet uten å endre kildekoden. Denne artikkelen vil utforske C# utvidelsesmetoder og hvordan de kan brukes på dette programmeringsspråket.

Hva er utvidelsesmetoder?

Utvidelsesmetoder er en slags statisk metode som fjerner bryet med å redigere kildekoden for å legge til nye metoder. Dette betyr at utviklere kan legge ny funksjonalitet til typer som strenger, heltall eller noen annen tilpasset klasse uten å måtte lage en ny klasse eller endre den originale klassen. Utvidelsesmetoder er definert i statiske klasser og bruker "dette" Nøkkelord For å spesifisere typen som utvides, er syntaksen for å lage en utvidelsesmetode som følger:

Offentlig statisk returtype MethodName (denne parameteren ExtendedType)

// gjennomføring

Det offentlige nøkkelordet indikerer at metoden er tilgjengelig hvor som helst i koden, statisk indikerer at metoden er en statisk metode, og returtype er datatypen som returneres med den metoden. MethodName er navnet på utvidelsesmetoden, og dette nøkkelordet etterfulgt av Utvidetype Parameter indikerer at denne metoden utvider den utvidede typen klasse.

Parameteren er parameteren overført til metoden, og implementeringen av metoden er skrevet inne i krøllete seler . Denne syntaksen gjør det mulig for utviklere å lage nye metoder for eksisterende typer, noe som gjør koden mer gjenbrukbar og modulær.

Hvordan bruke utvidelsesmetode for å utvide strengklassen

Anta at du vil legge til en ny metode i strengklassen som kapitaliserer den første bokstaven i strengen, du kan gjøre dette ved å bruke en utvidelsesmetode ved å bruke den gitte koden nedenfor:

ved hjelp av system;
Offentlige statiske klasse strengextensjoner

offentlig statisk streng CapitalizeFirstetter (denne strenginngangen)

hvis (streng.IsNullorempty (input))

Returinngang;

Returner char.Toupper (input [0]) + input.Substring (1);


Klasseprogram

statisk tomrom (streng [] args)

String input = "Hei Linux";
Strengresultat = input.CapitalizeFirstetter ();
Konsoll.WritLine (resultat);

Vi har laget en ny konsollapplikasjon som inkluderer strengextensjonsklassen og i hovedsak har vi laget en strengvariabel kalt som input og tildelt den en streng som inneholder “Hei Linux”. Neste CapitalizeFirstetter Utvidelsesmetode kalles på inngangsstrengen, som kapitaliserer den første bokstaven i strengen. Til slutt skriver vi ut resultatet til konsollen ved hjelp av 'WritLine ()' -funksjonen, så du bør se utdataene “Hei Linux” Når du utfører dette programmet:

Hvordan bruke utvidelsesmetode for å utvide heltallklassen

Anta at du vil legge til en ny metode i heltallklassen som avgjør om heltallet er jevnt eller rart. Du kan gjøre dette ved hjelp av en utvidelsesmetode, som vist nedenfor:

ved hjelp av system;
Offentlige statiske klasser

offentlig statisk bool Isven (denne int -innspillet)

Returinngang % 2 == 0;


Klasseprogram

statisk tomrom (streng [] args)

int -nummer = 10;
hvis (nummer.Iseven ())

Konsoll.WritLine ($ "nummer er jevn.");

ellers

Konsoll.WritLine ($ "nummer er merkelig.");


Koden oppretter en utvidelsesmetode som er for Int -datatypen og Isven Funksjonen returnerer sant hvis inngangen er jevn, og falsk ellers.

I hovedsak har vi opprettet et heltallsvariabelt nummer og tildelt det verdien 10, og etter det kaller vi Iseven Extension -metoden på tallvariabelen, som returnerer sant siden 10 er jevn. Til slutt skriver vi ut resultatet til konsollen ved hjelp av 'WritLine ()' -funksjonen, så du bør se utdataene “10 er jevn” Når du utfører dette programmet:

Hvordan bruke utvidelsesmetode for å utvide listegrensesnittet

La oss si at du vil legge til en ny metode til Ilist Grensesnitt som bestemmer om listen er tom eller ikke og for å bruke en utvidelsesmetode, som vist nedenfor:

ved hjelp av system;
Bruke system.Samlinger.Generisk;
Offentlige statiske klasse ListExtensions

Offentlig statisk bool Isempty (denne ilistlisten)

Returliste == NULL || liste.Telling == 0;


Klasseprogram

statisk tomrom (streng [] args)

Liste nummer = ny liste ();
hvis (tall.Er tom())

Konsoll.WritLine ("Listen er tom.");

ellers

Konsoll.WritLine ($ "Listen inneholder tall.Telle elementer.");


I dette eksemplet har vi laget en utvidelsesmetode Isempty for ilist datatype, der T er en generisk type parameter. De Er tom Metoden returnerer sant hvis inngangslisten er null eller ikke har noen elementer, og falsk ellers. I hovedsak har vi laget en ny Liste kalt tall og kalte deretter Er tom Utvidelsesmetode på talllisten, som returnerer sant siden listen er tom. Til å begynne med skriver vi ut resultatet til konsollen ved hjelp av 'WritLine ()' -funksjonen, så du bør se utdataene “Listen er tom” Når du utfører dette programmet:

Konklusjon

Utvidelsesmetoder er en av de mest nyttige funksjonene i C# som lar programmerere utvide eksisterende typer med ny funksjonalitet uten å endre sin opprinnelige kode. Utvidelsesmetoder er definert i en statisk klasse og bruker "dette" Nøkkelord etterfulgt av typen som utvides til å indikere at de er utvidelsesmetoder. I denne artikkelen har vi sett tre eksempler på utvidelsesmetoder som utvider streng-, heltall- og ilistklassene.