Kako koristiti anonimne vrste u C #

Anonimni tip je tip koji nema ime. Anonimni tip možete koristiti za inkapsuliranje skupa svojstava samo za čitanje unutar jedne jedinice - i ne trebate prethodno definirati anonimni tip. Ovaj članak raspravlja što su anonimni tipovi, zašto su važni i kako možemo raditi s anonimnim vrstama u C #.

Da biste radili s primjerima koda iz ovog članka, u sustavu biste trebali instalirati Visual Studio 2019. Ako još nemate kopiju, ovdje možete preuzeti Visual Studio 2019. 

Stvorite projekt aplikacije konzole u Visual Studiju

Prvo, kreirajmo projekt aplikacije .NET Core konzole u Visual Studiju. Pod pretpostavkom da je Visual Studio 2019 instaliran u vašem sustavu, slijedite korake opisane u nastavku da biste u Visual Studiju stvorili novi projektni program konzole .NET Core.

  1. Pokrenite Visual Studio IDE.
  2. Kliknite "Stvori novi projekt".
  3. U prozoru "Stvori novi projekt" s popisa predložaka odaberite "Aplikacija konzole (.NET Core)".
  4. Kliknite Dalje.
  5. U sljedećem prozoru "Konfiguriranje novog projekta" navedite naziv i mjesto za novi projekt.
  6. Kliknite Stvori.

To će stvoriti novi projekt aplikacije .NET Core konzole u Visual Studio 2019. Ovaj ćemo projekt upotrijebiti u sljedećim odjeljcima ovog članka kako bismo ilustrirali kako možemo raditi s anonimnim vrstama u C #.

Razumijevanje anonimnih vrsta u jeziku C #

U osnovi je anonimni tip referentni tip i može se definirati pomoću ključne riječi var. Možete imati jedno ili više svojstava u anonimnom tipu, ali sva su samo za čitanje. Za razliku od klase C #, anonimni tip ne može imati polje ili metodu - može imati samo svojstva.

Možete pristupiti anonimnom tipu ili njegovim svojstvima unutar metode gdje je anonimni tip definiran. Drugim riječima, dostupnost anonimnog tipa ograničena je na opseg tamo gdje je definirana.

Upotrijebite anonimni tip u C #

Krenimo sada u neki kod. Razmotrite sljedeći anonimni tip.

var autor = novo

{

  FirstName = "Joydip",

  Prezime = "Kanjilal",

  Adresa = "Hyderabad, INDIJA"

};

U prethodnom isječku koda, autor je naziv instance anonimnog tipa stvorene pomoću nove ključne riječi. (Samo ime anonimnog tipa zna samo sastavljač.) Ovaj anonimni tip sadrži tri svojstva, a to su Ime, Prezime i Adresa. Sva su ta svojstva tipa stringa. Imajte na umu da prilikom rada s anonimnim tipom ne morate navesti vrstu svojstva prije inicijalizacije.

Sljedeći isječak koda možete koristiti za pristup svim trima svojstvima gore navedenog anonimnog tipa.

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

Console.WriteLine ("Adresa: {0}", autor.Address);

Upotrijebite ugniježđeni anonimni tip u C #

Anonimni tipovi se također mogu ugnijezditi. Odnosno, anonimni tip možete imati kao svojstvo unutar drugog anonimnog tipa. Evo primjera koji to ilustrira.

var autor = novo

{

  FirstName = "Joydip",

  Prezime = "Kanjilal",

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

};

Možete pristupiti svojstvima ove ugniježđene anonimne vrste kao što je prikazano u isječku koda koji je dan u nastavku.

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

Console.WriteLine ("Adresa: {0}", autor.Address.City);

Kompletni program dan je za vašu referencu.

statička praznina Main (string [] args)

{

  var autor = novo

  {

     FirstName = "Joydip",

     Prezime = "Kanjilal",

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

  };

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

  Console.WriteLine ("Adresa: {0}", autor.Address.City);

  Console.Read ();

}

Koristite anonimne vrste s LINQ-om 

Klauzula Select u LINQ-u stvara i vraća anonimni tip kao rezultat. Sljedeći isječak koda to ilustrira.

Razmotrite sljedeći razred s imenom Autor.

javni razred Autor

{

  javni int Id {get; postavljen; }

  javni niz FirstName {get; postavljen; }

  javni niz LastName {get; postavljen; }

}

Sljedeći isječak koda pokazuje kako možete stvoriti popis autora.

IList autori =

novi popis ()

{

  novi autor () {Id = 1, FirstName = "John", LastName = "Willey"},

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

  novi autor () {Id = 3, FirstName = "Bill", LastName = "Ruffner"},

  novi autor () {Id = 4, FirstName = "Joydip", LastName = "Kanjilal"}

};

I sljedeći isječak koda pokazuje kako možete iskoristiti klauzulu Select u LINQ-u zajedno s anonimnim tipom kako biste vratili rezultat nakon izvršenja upita.

var rezultat = od a u autori odaberite novo

{

   Id = a.Id,

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

};

Sada na prozoru konzole možete prikazati autorove ID-ove i imena kao što je prikazano u isječku koda u nastavku.

foreach (var podaci u rezultatu)

      Console.WriteLine (data.Name);

Kompletni program dan je za vašu referencu.

javni razred Autor

    {

        javni int Id {get; postavljen; }

        javni niz FirstName {get; postavljen; }

        javni niz LastName {get; postavljen; }

    }

    razredni program

    {

        statička praznina Main (string [] args)

        {

            Autori IList = novi popis () {

                        novi autor () {Id = 1, FirstName = "John",

                                      Prezime = "Willey"},

                        novi autor () {Id = 2, Ime = "Steve",

                                      Prezime = "Smith"},

                        novi autor () {Id = 3, FirstName = "Bill",

                                      LastName = "Ruffner"},

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

                                      Prezime = "Kanjilal"}

                };

            var rezultat = od autora autora

                         odaberite novo

                         {

                             Id = a.Id,

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

                         };

            foreach (var podaci u rezultatu)

                Console.WriteLine (data.Name);

            Console.Read ();

        }

    }

Anonimni tipovi omogućuju vam da stvorite tip i brzo ga napravite bez instanciranja, a da prethodno ne morate deklarirati tip. S gledišta CLR-a, anonimni tip je samo još jedan referentni tip. Prevoditelj daje ime svakoj anonimnoj vrsti ispod naslovnica.

Anonimni tipovi potječu iz klase Object. Zbog toga anonimni tip možete emitirati samo na primjerak tipa Objekt. Također imajte na umu da vrsta povrata metode, svojstva, događaja, delegata itd. Ne može biti anonimna vrsta.

Kako učiniti više u C #:

  • Kada koristiti apstraktnu klasu naspram sučelja u C #
  • Kako raditi s AutoMapperom u C #
  • Kako koristiti lambda izraze u C #
  • Kako raditi s delegatima Action, Func i Predicate u C #
  • Kako koristiti Dapper ORM u C #
  • Kako implementirati jednostavni zapisnik u C #
  • Kako raditi s log4netom na C #
  • Kako raditi s delegatima u C #
  • Kako raditi s atributima u C #
  • Kako koristiti uzorak dizajna muhe u C #
  • Kako implementirati obrazac dizajna spremišta u C #
  • Istraživanje virtualnih i apstraktnih metoda u C #
  • Kako raditi s refleksijom u C #
  • Kako raditi s nadzornikom datoteka u C #