Programmering

Hvordan bruke anonyme typer i C #

En anonym type er en type som ikke har noe navn. Du kan bruke en anonym type til å kapsle inn et sett med skrivebeskyttede egenskaper i en enkelt enhet - og du trenger ikke å definere den anonyme typen på forhånd. Denne artikkelen diskuterer hva anonyme typer er, hvorfor de er viktige, og hvordan vi kan jobbe med anonyme typer i C #.

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

La oss først lage et .NET Core-konsollapplikasjonsprosjekt 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-konsollapplikasjonsprosjekt 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 i de påfølgende delene av denne artikkelen for å illustrere hvordan vi kan jobbe med anonyme typer i C #.

Forstå anonyme typer i C #

I hovedsak er en anonym type en referansetype og kan defineres ved hjelp av var-nøkkelordet. Du kan ha en eller flere egenskaper i en anonym type, men alle er skrivebeskyttet. I motsetning til en C #-klasse kan en anonym type ikke ha et felt eller en metode - den kan bare ha egenskaper.

Du kan få tilgang til en anonym type eller dens egenskaper i metoden der den anonyme typen er definert. Tilgjengeligheten til en anonym type er med andre ord begrenset til omfanget der den er definert.

Bruk en anonym type i C #

La oss nå grave i litt kode. Vurder følgende anonyme type.

var forfatter = ny

{

FirstName = "Joydip",

LastName = "Kanjilal",

Adresse = "Hyderabad, INDIA"

};

I forrige kodebit er forfatter navnet på en forekomst av en anonym type opprettet ved hjelp av det nye nøkkelordet. (Navnet på selve den anonyme typen er bare kjent av kompilatoren.) Denne anonyme typen inneholder tre egenskaper, nemlig fornavn, etternavn og adresse. Alle disse egenskapene er av strengtypen. Vær oppmerksom på at når du arbeider med en anonym type, trenger du ikke å spesifisere typen eiendom før du initialiserer den.

Du kan bruke følgende kodebit for å få tilgang til alle tre egenskapene av den ovennevnte anonyme typen.

Console.WriteLine ("Navn: {0} {1}", forfatter.FirstName, author.LastName);

Console.WriteLine ("Adresse: {0}", forfatter.Adresse);

Bruk en nestet anonym type i C #

Anonyme typer kan også være nestet. Det vil si at du kan ha en anonym type som en eiendom i en annen anonym type. Her er et eksempel som illustrerer dette.

var forfatter = ny

{

FirstName = "Joydip",

LastName = "Kanjilal",

Adresse = ny {City = "Hyderabad", land = "INDIA"}

};

Du kan få tilgang til egenskapene til denne nestede anonyme typen som vist i kodebiten gitt nedenfor.

Console.WriteLine ("Navn: {0} {1}", forfatter.FirstName, author.LastName);

Console.WriteLine ("Adresse: {0}", forfatter.Address.City);

Det komplette programmet er gitt nedenfor for din referanse.

statisk tomrom Main (streng [] args)

{

var forfatter = ny

  {

FirstName = "Joydip",

LastName = "Kanjilal",

Adresse = ny {City = "Hyderabad", land = "INDIA"}

  };

Console.WriteLine ("Navn: {0} {1}", forfatter.FirstName, author.LastName);

Console.WriteLine ("Adresse: {0}", forfatter.Address.City);

Console.Read ();

}

Bruk anonyme typer med LINQ

Select-setningen i LINQ oppretter og returnerer en anonym type som et resultat. Følgende kodebit illustrerer dette.

Tenk på følgende klasse som heter Forfatter.

offentlig klasse Forfatter

{

offentlig int Id {get; sett; }

offentlig streng Fornavn {get; sett; }

offentlig streng Etternavn {get; sett; }

}

Følgende kodebit viser hvordan du kan lage en liste over forfattere.

IListiske forfattere =

ny liste ()

{

ny forfatter () {Id = 1, FirstName = "John", LastName = "Willey"},

ny forfatter () {Id = 2, FirstName = "Steve", LastName = "Smith"},

ny forfatter () {Id = 3, FirstName = "Bill", LastName = "Ruffner"},

ny forfatter () {Id = 4, FirstName = "Joydip", LastName = "Kanjilal"}

};

Og neste kodebit viser hvordan du kan dra nytte av Select-setningen i LINQ sammen med en anonym type for å returnere resultatet ved kjøring av et spørsmål.

var resultat = fra a i forfattere velg nytt

{

Id = a.Id,

Navn = a.FirstName + "\ t" + a.LastName

};

Du kan nå vise forfatter-ID og navn i konsollvinduet som vist i kodebiten nedenfor.

foreach (var data i resultat)

Console.WriteLine (data.Name);

Det komplette programmet er gitt nedenfor for din referanse.

offentlig klasse Forfatter

    {

offentlig int Id {get; sett; }

offentlig streng Fornavn {get; sett; }

offentlig streng Etternavn {get; sett; }

    }

klasse Program

    {

statisk tomrom Main (streng [] args)

        {

IListiske forfattere = ny liste () {

ny forfatter () {Id = 1, FirstName = "John",

LastName = "Willey"},

ny forfatter () {Id = 2, FirstName = "Steve",

LastName = "Smith"},

ny forfatter () {Id = 3, FirstName = "Bill",

LastName = "Ruffner"},

ny forfatter () {Id = 4, FirstName = "Joydip",

LastName = "Kanjilal"}

                };

var resultat = fra a i forfattere

velg ny

                         {

Id = a.Id,

Navn = a.FirstName + "\ t" + a.LastName

                         };

foreach (var data i resultat)

Console.WriteLine (data.Name);

Console.Read ();

        }

    }

Anonyme typer lar deg lage en type og instantiere den raskt uten å måtte erklære typen tidligere. Fra CLRs synspunkt er en anonym type bare en annen referansetype. Kompilatoren gir et navn til hver anonyme type under omslaget.

Anonyme typer kommer fra Object-klassen. Dette er grunnen til at du bare kan kaste en anonym type til en forekomst av Objekttype. Legg også merke til at returtypen til en metode, en eiendom, en hendelse, en delegat osv. Ikke kan være en anonym type.

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 bruke Dapper ORM i C #
  • Slik implementerer du en enkel logger i C #
  • Hvordan jobbe med log4net i C #
  • Hvordan jobbe med delegater i C #
  • Hvordan jobbe med attributter i C #
  • Hvordan bruke flyvevekt mønster i C #
  • Slik implementerer du mønsteret for depotdesign i C #
  • Utforske virtuelle og abstrakte metoder i C #
  • Hvordan jobbe med refleksjon i C #
  • Hvordan jobbe med filsystemwatcher i C #
$config[zx-auto] not found$config[zx-overlay] not found