Programovanie

Ako používať anonymné typy v C #

Anonymný typ je typ, ktorý nemá meno. Môžete použiť anonymný typ na zapuzdrenie sady vlastností iba na čítanie do jednej jednotky - a nemusíte vopred definovať anonymný typ. Tento článok pojednáva o tom, čo sú anonymné typy, prečo sú dôležité a ako môžeme pracovať s anonymnými typmi v C #.

Ak chcete pracovať s príkladmi kódu uvedenými v tomto článku, mali by ste mať vo svojom systéme nainštalovanú aplikáciu Visual Studio 2019. Ak ešte nemáte kópiu, môžete si tu stiahnuť Visual Studio 2019.

Vytvorte projekt konzolovej aplikácie v Visual Studio

Najprv si vytvoríme projekt konzolovej aplikácie .NET Core v Visual Studio. Za predpokladu, že je vo vašom systéme nainštalované Visual Studio 2019, vytvorte nový projekt konzolovej aplikácie .NET Core v Visual Studio podľa pokynov uvedených nižšie.

  1. Spustite Visual Studio IDE.
  2. Kliknite na „Vytvoriť nový projekt“.
  3. V okne „Vytvoriť nový projekt“ vyberte zo zobrazeného zoznamu šablón „Console App (.NET Core)“.
  4. Kliknite na Ďalej.
  5. V nasledujúcom okne „Konfigurácia nového projektu“ zadajte názov a umiestnenie nového projektu.
  6. Kliknite na tlačidlo Vytvoriť.

Týmto sa vytvorí nový projekt konzolovej aplikácie .NET Core v Visual Studio 2019. Tento projekt použijeme v nasledujúcich častiach tohto článku na ilustráciu toho, ako môžeme pracovať s anonymnými typmi v C #.

Pochopte anonymné typy v C #

Anonymný typ je v podstate referenčný typ a dá sa definovať pomocou kľúčového slova var. Môžete mať jednu alebo viac vlastností anonymného typu, ale všetky sú iba na čítanie. Na rozdiel od triedy C # nemôže anonymný typ mať pole alebo metódu - môže mať iba vlastnosti.

K anonymnému typu alebo k jeho vlastnostiam máte prístup vo vnútri metódy, kde bol anonymný typ definovaný. Inými slovami, prístupnosť anonymného typu je obmedzená na rozsah, v ktorom bol definovaný.

Použite anonymný typ v C #

Poďme teraz kopať do nejakého kódu. Zvážte nasledujúci anonymný typ.

var autor = nový

{

FirstName = "Joydip",

Priezvisko = "Kanjilal",

Adresa = "Hyderabad, INDIA"

};

V predchádzajúcom útržku kódu je autor názov inštancie anonymného typu vytvorenej pomocou nového kľúčového slova. (Samotný názov anonymného typu pozná iba kompilátor.) Tento anonymný typ obsahuje tri vlastnosti, a to Meno, Priezvisko a Adresa. Všetky tieto vlastnosti sú reťazcového typu. Upozorňujeme, že pri práci s anonymným typom nemusíte pred inicializáciou špecifikovať typ vlastnosti.

Nasledujúci útržok kódu môžete použiť na prístup ku všetkým trom vlastnostiam vyššie uvedeného anonymného typu.

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

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

Použite vnorený anonymný typ v C #

Môžu byť vnorené aj anonymné typy. To znamená, že môžete mať anonymný typ ako vlastníctvo v inom anonymnom type. Toto je príklad, ktorý to ilustruje.

var autor = nový

{

FirstName = "Joydip",

Priezvisko = "Kanjilal",

Adresa = nová {Mesto = "Hyderabad", Krajina = "INDIA"}

};

K vlastnostiam tohto vnoreného anonymného typu máte prístup, ako je uvedené v útržku kódu uvedenom nižšie.

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

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

Celý program je uvedený nižšie pre vašu informáciu.

static void Main (reťazec [] args)

{

var autor = nový

  {

FirstName = "Joydip",

Priezvisko = "Kanjilal",

Adresa = nová {Mesto = "Hyderabad", Krajina = "INDIA"}

  };

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

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

Console.Read ();

}

Používajte anonymné typy s LINQ

Klauzula Select v LINQ ako výsledok vytvorí a vráti anonymný typ. Ilustruje to nasledujúci úryvok kódu.

Zvážte nasledujúcu triedu s názvom Autor.

verejná trieda Autor

{

public int Id {get; sada; }

verejný reťazec FirstName {get; sada; }

verejný reťazec Priezvisko {get; sada; }

}

Nasledujúci úryvok kódu ukazuje, ako môžete vytvoriť zoznam autorov.

Autori IListu

nový zoznam ()

{

nový autor () {Id = 1, meno = "John", priezvisko = "Willey"},

nový autor () {Id = 2, meno = "Steve", priezvisko = "Smith"},

nový autor () {Id = 3, meno = "Bill", priezvisko = "Ruffner"},

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

};

A nasledujúci úryvok kódu ukazuje, ako môžete využiť klauzulu Select v LINQ spolu s anonymným typom na vrátenie výsledku po vykonaní dotazu.

var result = z a v autoroch vyberte nový

{

Id = a.Id,

Meno = a.prve meno + "\ t" + a.posledne meno

};

ID a mená autorov teraz môžete zobraziť v okne konzoly, ako je to znázornené v útržku kódu nižšie.

foreach (var dáta vo výsledku)

Console.WriteLine (data.Name);

Celý program je uvedený nižšie pre vašu informáciu.

verejná trieda Autor

    {

public int Id {get; sada; }

verejný reťazec FirstName {get; sada; }

verejný reťazec Priezvisko {get; sada; }

    }

triedny program

    {

static void Main (reťazec [] args)

        {

Autori IList = nový zoznam () {

nový autor () {Id = 1, meno = "John",

Priezvisko = "Willey"},

nový autor () {Id = 2, meno = "Steve",

Priezvisko = "Smith"},

nový autor () {Id = 3, meno = "Bill",

Priezvisko = "Ruffner"},

nový autor () {Id = 4, FirstName = "Joydip",

Priezvisko = "Kanjilal"}

                };

var result = od a v autoroch

vybrať nový

                         {

Id = a.Id,

Meno = a.prve meno + "\ t" + a.posledne meno

                         };

foreach (var dáta vo výsledku)

Console.WriteLine (data.Name);

Console.Read ();

        }

    }

Anonymné typy vám umožňujú vytvoriť typ a rýchlo ho vytvoriť bez toho, aby ste ho museli deklarovať skôr. Z pohľadu CLR je anonymný typ iba ďalším referenčným typom. Kompilátor poskytuje názvy všetkých anonymných typov pod titulkami.

Anonymné typy pochádzajú z triedy Object. Preto môžete anonymný typ vrhnúť iba na inštanciu typu Object. Upozorňujeme tiež, že návratový typ metódy, vlastnosti, udalosti, delegáta atď. Nemôže byť anonymným typom.

Ako urobiť viac v C #:

  • Kedy použiť abstraktné rozhranie vs. rozhranie v C #
  • Ako pracovať s AutoMapperom v C #
  • Ako používať výrazy lambda v C #
  • Ako pracovať s delegátmi Action, Func a Predicate v C #
  • Ako používať Dapper ORM v C #
  • Ako implementovať jednoduchý záznamník v C #
  • Ako pracovať s log4net v C #
  • Ako pracovať s delegátmi v C #
  • Ako pracovať s atribútmi v C #
  • Ako používať návrhový vzor mušej váhy v C #
  • Ako implementovať vzor návrhu úložiska v C #
  • Skúmanie virtuálnych a abstraktných metód v C #
  • Ako pracovať s odrazom v C #
  • Ako pracovať so súborovým systémom v C #
$config[zx-auto] not found$config[zx-overlay] not found