Programiranje

Kako uporabljati anonimne vrste v jeziku C #

Anonimni tip je tip, ki nima imena. Anonimni tip lahko uporabite za vključitev nabora samo za branje lastnosti znotraj ene enote - in anonimnega tipa vam ni treba predhodno določiti. Ta članek govori o tem, kaj so anonimni tipi, zakaj so pomembni in kako lahko delamo z anonimnimi vrstami v jeziku C #.

Če želite delati s primeri kod v tem članku, morate imeti v sistemu nameščen Visual Studio 2019. Če kopije še nimate, lahko Visual Studio 2019 prenesete tukaj.

Ustvarite projekt aplikacije za konzolo v Visual Studio

Najprej ustvarimo aplikacijski projekt konzole .NET Core v Visual Studio. Ob predpostavki, da je Visual Studio 2019 nameščen v vašem sistemu, sledite spodnjim korakom, da ustvarite nov aplikacijski projekt konzole .NET Core v Visual Studio.

  1. Zaženite Visual Studio IDE.
  2. Kliknite »Ustvari nov projekt«.
  3. V oknu »Ustvari nov projekt« na seznamu predlog izberite »Console App (.NET Core)«.
  4. Kliknite Naprej.
  5. V naslednjem oknu »Konfiguriranje novega projekta« določite ime in mesto novega projekta.
  6. Kliknite Ustvari.

Tako boste ustvarili nov aplikacijski projekt konzole .NET Core v Visual Studio 2019. Ta projekt bomo uporabili v naslednjih odsekih tega članka, da ponazorimo, kako lahko delamo z anonimnimi vrstami v jeziku C #.

Razumevanje anonimnih vrst v jeziku C #

Anonimni tip je v bistvu referenčni tip in ga je mogoče definirati s ključno besedo var. Lahko imate eno ali več lastnosti v anonimnem tipu, vendar so vse samo za branje. V nasprotju s razredom C # anonimni tip ne more imeti polja ali metode - lahko ima samo lastnosti.

Do anonimnega tipa ali njegovih lastnosti lahko dostopate znotraj metode, kjer je bila anonimna vrsta definirana. Z drugimi besedami, dostopnost anonimnega tipa je omejena na obseg, kjer je bila določena.

Uporabite anonimni tip v jeziku C #

Poglejmo zdaj nekaj kode. Razmislite o naslednji anonimni vrsti.

var avtor = novo

{

FirstName = "Joydip",

LastName = "Kanjilal",

Naslov = "Hyderabad, INDIJA"

};

V prejšnjem delčku kode je avtor ime primerka anonimnega tipa, ustvarjenega z novo ključno besedo. (Samo ime anonimnega tipa pozna samo prevajalnik.) Ta anonimni tip vsebuje tri lastnosti, in sicer Ime, Priimek in Naslov. Vse te lastnosti so nizovnega tipa. Upoštevajte, da vam pri delu z anonimnim tipom ni treba določiti vrste lastnosti, preden jo inicializirate.

Za dostop do vseh treh lastnosti zgoraj navedene anonimne vrste lahko uporabite naslednji delček kode.

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

Console.WriteLine ("Naslov: {0}", avtor.Address);

Uporabite ugnezdeni anonimni tip v C #

Anonimne vrste lahko tudi ugnezdijo. To pomeni, da imate lahko anonimni tip kot lastnost drugega anonimnega tipa. Tu je primer, ki to ponazarja.

var avtor = novo

{

FirstName = "Joydip",

LastName = "Kanjilal",

Naslov = novo {City = "Hyderabad", Country = "INDIA"}

};

Do lastnosti te ugnezdene anonimne vrste lahko dostopate, kot je prikazano v spodnjem delčku kode.

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

Console.WriteLine ("Naslov: {0}", avtor.Address.City);

Celoten program je naveden spodaj za referenco.

statična praznina Main (string [] args)

{

var avtor = novo

  {

FirstName = "Joydip",

LastName = "Kanjilal",

Naslov = novo {City = "Hyderabad", Country = "INDIA"}

  };

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

Console.WriteLine ("Naslov: {0}", avtor.Address.City);

Console.Read ();

}

Uporabite anonimne vrste z LINQ

Stavek Select v LINQ kot rezultat ustvari in vrne anonimni tip. Naslednji delček kode to ponazarja.

Razmislite o naslednjem razredu z imenom Avtor.

javni razred Avtor

{

public int Id {get; set; }

javni niz FirstName {get; set; }

javni niz LastName {get; set; }

}

Naslednji delček kode prikazuje, kako lahko ustvarite seznam avtorjev.

Avtorji IList =

nov seznam ()

{

nov avtor () {Id = 1, FirstName = "John", LastName = "Willey"},

novi avtor () {Id = 2, FirstName = "Steve", LastName = "Smith"},

nov avtor () {Id = 3, FirstName = "Bill", LastName = "Ruffner"},

nov avtor () {Id = 4, FirstName = "Joydip", LastName = "Kanjilal"}

};

Naslednji delček kode prikazuje, kako lahko izkoristite klavzulo Select v LINQ skupaj z anonimnim tipom, da vrnete rezultat po izvedbi poizvedbe.

var rezultat = med avtorji izberite novo

{

Id = a.Id,

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

};

Zdaj lahko v oknu konzole prikažete avtorjeve ID-je in imena, kot je prikazano v spodnjem delčku kode.

foreach (var podatki v rezultatu)

Console.WriteLine (data.Name);

Celoten program je naveden spodaj za referenco.

javni razred Avtor

    {

public int Id {get; set; }

javni niz FirstName {get; set; }

javni niz LastName {get; set; }

    }

razredni program

    {

statična praznina Main (string [] args)

        {

Avtorji IList = nov seznam () {

nov avtor () {Id = 1, FirstName = "John",

Priimek = "Willey"},

novi avtor () {Id = 2, FirstName = "Steve",

Priimek = "Smith"},

novi avtor () {Id = 3, FirstName = "Račun",

LastName = "Ruffner"},

novi avtor () {Id = 4, FirstName = "Joydip",

Priimek = "Kanjilal"}

                };

var rezultat = avtorjev avtorja a

izberite novo

                         {

Id = a.Id,

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

                         };

foreach (var podatki v rezultatu)

Console.WriteLine (data.Name);

Console.Read ();

        }

    }

Anonimni tipi omogočajo hitro ustvarjanje in instanciranje, ne da bi ga bilo treba predhodno prijaviti. Z vidika CLR je anonimni tip le še ena referenčna vrsta. Prevajalnik določi ime za vsako anonimno vrsto pod platnicami.

Anonimni tipi izhajajo iz razreda Object. Zato lahko anonimni tip oddate samo na primerek tipa Objekt. Upoštevajte tudi, da vrsta vrnitve metode, lastnosti, dogodka, pooblaščenca itd. Ne more biti anonimna vrsta.

Kako narediti več v jeziku C #:

  • Kdaj uporabiti abstraktni razred v primerjavi z vmesnikom v jeziku C #
  • Kako delati z AutoMapper v C #
  • Kako uporabljati lambda izraze v jeziku C #
  • Kako delati z delegati Action, Func in Predicate v C #
  • Kako uporabljati Dapper ORM v C #
  • Kako implementirati preprost zapisovalnik v jeziku C #
  • Kako delati z log4net v C #
  • Kako delati z delegati v C #
  • Kako delati z atributi v jeziku C #
  • Kako uporabiti vzorec letenja v C #
  • Kako implementirati vzorec oblikovanja repozitorija v C #
  • Raziskovanje virtualnih in abstraktnih metod v jeziku C #
  • Kako delati z refleksijo v jeziku C #
  • Kako delati z nadzornikom datotek v C #
$config[zx-auto] not found$config[zx-overlay] not found