Programmering

Hvordan jobbe med en Tuple i C #

Tuples er ikke noe nytt - de har eksistert i ganske lang tid nå på programmeringsspråk som F #, Python, etc. og også i databaser. En Tuple kan defineres som en datastruktur som består av en ordnet, endelig sekvens av uforanderlige, heterogene elementer som har faste størrelser. Elementene i en tuple er uforanderlige, dvs. de gjelder en bestemt type. Du kan dra nytte av tupler for å returnere flere verdier fra en metode og også lage sammensatte samlinger. Du kan utnytte de statiske metodene til System.Tuple-klassen for å jobbe med tupler i .Net.

Hva er en Tuple?

Tuple er en datastruktur som består av en ordnet, heterogen samling av "n" -elementer - elementene i en tuple kan enten være av samme type eller til og med være av forskjellige typer. I matematikk kan en n-tuple defineres som en sekvens eller som en ordnet liste over "n" -elementer. Det skal bemerkes at "n" her betegner et positivt heltall. Videre kan det bare være en 0-tupel, dvs. en tom sekvens.

Rekkefølgen til elementene i en Tuple er definert på tidspunktet da Tuple er opprettet. Egenskapene i en Tuple er alle skrivebeskyttet, dvs. de kan ikke endres når de først er opprettet. Størrelsen på Tuple er fast siden den ikke kan endres når den er definert på tidspunktet da Tuple er opprettet.

Hvorfor skal vi bruke Tuples?

Det kan være lurt å bruke en tuple for å representere et sett med heterogene data og gi en enkel måte å få tilgang til dataene på. Du kan også dra nytte av en tuple for å returnere flere verdier fra en metode eller til og med overføre flere verdier til en metode. Jeg bruker en tuple for å kombinere flere verdier (hvis de ikke er relatert til hverandre) til en sans behovet for å måtte bruke en tilpasset klasse. Merk at selv om anonyme typer har mange ting til felles, kan du ikke returnere en anonym type fra en metode.

En viktig begrensning for å bruke tupler i dette tilfellet er at du ikke kan ha meningsfylte navn på egenskapene i en Tuple - de vil bli navngitt som Item1, Item2, Item3, og så videre. Når koden din som bruker Tuple vokser, vil dette imidlertid bli uleselig og vanskelig å opprettholde over tid. Det skal også bemerkes at Tuple er en klasse og ikke en struktur. Derfor blir forekomster av Tuple alltid lagret i den administrerte dyngen. Dette kan til og med bli en ytelsesutfordring for deg hvis forekomster av Tuple har store størrelser og de ikke blir renset opp på en forsvarlig måte. Her er en interessant lesning om Tuple på MSDN.

Programmering av tuples i C #

For å jobbe med tupler i C #, må du utnytte Tuple-klassen. Tuple-klassen er statisk og består av den statiske Create-metoden som kan brukes til å lage en tuple-forekomst. Forresten inneholder den statiske Create-metoden i Tuple-klassen åtte overbelastninger som godtar generiske argumenter. Her er listen over de overbelastede Lag-metodene i denne klassen.

Tuple. Lag

Tuple. Lag

Tuple. Lag

Tuple. Lag

Tuple. Lag

Tuple. Lag

Tuple. Lag

Tuple. Lag

Følgende kodebit viser hvordan du kan opprette og initialisere en Tuple.

var listEmployee = ny liste

{

Tuple.Create (1, "Joydip Kanjilal", "INDIA"),

Tuple.Create (2, "Michael Stevens", "USA"),

Tuple.Create (3, "Steve Barnes", "USA")

};

Når Tuple er opprettet og initialisert, kan du gjenta den på samme måte som med en samling. Følgende kodebit viser hvordan dette kan oppnås.

foreach (Tuple tuple i listeMedarbeider)

           {

Console.WriteLine (tuple.Item2);

           }

Og her er den komplette kodelisten som illustrerer hvordan du kan opprette, initialisere og deretter gjenta en Tuple i C #.

statisk tomrom Main (streng [] args)

       {

var listEmployee = ny liste

           {

Tuple.Create (1, "Joydip Kanjilal", "INDIA"),

Tuple.Create (2, "Michael Stevens", "USA"),

Tuple.Create (3, "Steve Barnes", "USA")

           };

foreach (Tuple tuple i listeMedarbeider)

           {

Console.WriteLine (tuple.Item2);

           }

Console.Read ();

       }

Du kan også lage en nestet tuple. Følgende kodebit illustrerer hvordan du kan gjøre dette.

var tuple = Tuple.Create (1, "Joydip Kanjilal", ny Tuple ("Hyderabad", "India"));