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.
- Spustite Visual Studio IDE.
- Kliknite na „Vytvoriť nový projekt“.
- V okne „Vytvoriť nový projekt“ vyberte zo zobrazeného zoznamu šablón „Console App (.NET Core)“.
- Kliknite na Ďalej.
- V nasledujúcom okne „Konfigurácia nového projektu“ zadajte názov a umiestnenie nového projektu.
- 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 IListunový 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 #