Programování

Jak používat anonymní typy v C #

Anonymní typ je typ, který nemá název. Anonymní typ můžete použít k zapouzdření sady vlastností jen pro čtení uvnitř jedné jednotky - a anonymní typ nemusíte předem definovat. Tento článek pojednává o tom, co jsou anonymní typy, proč jsou důležité a jak můžeme pracovat s anonymními typy v C #.

Chcete-li pracovat s příklady kódu uvedenými v tomto článku, měli byste mít ve svém systému nainstalovanou Visual Studio 2019. Pokud ještě nemáte kopii, můžete si stáhnout Visual Studio 2019 zde.

Vytvořte projekt konzolové aplikace v sadě Visual Studio

Nejprve si vytvořme projekt konzolové aplikace .NET Core v sadě Visual Studio. Za předpokladu, že je ve vašem systému nainstalovaná sada Visual Studio 2019, postupujte podle níže uvedených kroků a vytvořte nový projekt konzolové aplikace .NET Core v sadě Visual Studio.

  1. Spusťte Visual Studio IDE.
  2. Klikněte na „Vytvořit nový projekt“.
  3. V okně „Vytvořit nový projekt“ vyberte ze zobrazeného seznamu šablon „Console App (.NET Core)“.
  4. Klikněte na Další.
  5. V dalším okně „Konfigurace nového projektu“ zadejte název a umístění nového projektu.
  6. Klikněte na Vytvořit.

Tím se vytvoří nový projekt aplikace konzoly .NET Core v sadě Visual Studio 2019. Tento projekt použijeme v následujících částech tohoto článku k ilustraci, jak můžeme pracovat s anonymními typy v C #.

Pochopte anonymní typy v C #

Anonymní typ je v zásadě referenční typ a lze jej definovat pomocí klíčového slova var. Můžete mít jednu nebo více vlastností anonymního typu, ale všechny jsou jen pro čtení. Na rozdíl od třídy C # nemůže anonymní typ mít pole nebo metodu - může mít pouze vlastnosti.

Můžete přistupovat k anonymnímu typu nebo k jeho vlastnostem uvnitř metody, kde byl anonymní typ definován. Jinými slovy, přístupnost anonymního typu je omezena na rozsah, kde byl definován.

Použijte anonymní typ v C #

Podívejme se nyní na nějaký kód. Zvažte následující anonymní typ.

var autor = nový

{

FirstName = "Joydip",

Příjmení = "Kanjilal",

Adresa = "Hyderabad, Indie"

};

V předchozím fragmentu kódu je autor název instance anonymního typu vytvořeného pomocí nového klíčového slova. (Název samotného anonymního typu zná pouze kompilátor.) Tento anonymní typ obsahuje tři vlastnosti, jmenovitě FirstName, LastName a Address. Všechny tyto vlastnosti jsou řetězcového typu. Všimněte si, že při práci s anonymním typem nemusíte před inicializací určit typ vlastnosti.

Následující fragment kódu můžete použít pro přístup ke všem třem vlastnostem výše uvedeného anonymního typu.

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

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

Použijte vnořený anonymní typ v C #

Anonymní typy lze také vnořit. To znamená, že můžete mít anonymní typ jako vlastnost uvnitř jiného anonymního typu. Zde je příklad, který to ilustruje.

var autor = nový

{

FirstName = "Joydip",

Příjmení = "Kanjilal",

Adresa = nová {Město = "Hyderabad", Země = "INDIE"}

};

Můžete přistupovat k vlastnostem tohoto vnořeného anonymního typu, jak je znázorněno v níže uvedeném fragmentu kódu.

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

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

Celý program je uveden níže pro vaši potřebu.

static void Main (řetězec [] args)

{

var autor = nový

  {

FirstName = "Joydip",

Příjmení = "Kanjilal",

Adresa = nová {Město = "Hyderabad", Země = "INDIE"}

  };

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

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

Console.Read ();

}

Použijte anonymní typy s LINQ

Klauzule Select v LINQ jako výsledek vytvoří a vrátí anonymní typ. Následující fragment kódu to ilustruje.

Zvažte následující třídu s názvem Autor.

veřejná třída Autor

{

public int Id {get; soubor; }

public string FirstName {get; soubor; }

veřejný řetězec Příjmení {get; soubor; }

}

Následující fragment kódu ukazuje, jak můžete vytvořit seznam autorů.

Autoři IList =

nový seznam ()

{

nový autor () {Id = 1, jméno = "John", příjmení = "Willey"},

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

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

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

};

A další fragment kódu ukazuje, jak můžete využít klauzuli Select v LINQ společně s anonymním typem k vrácení výsledku po provedení dotazu.

var result = z a v autorech vyberte nový

{

Id = a.Id,

Jméno = a.FirstName + "\ t" + a.Poslední jméno

};

ID a jména autorů nyní můžete zobrazit v okně konzoly, jak je ukázáno ve fragmentu kódu níže.

foreach (var data ve výsledku)

Console.WriteLine (data.nazev);

Celý program je uveden níže pro vaši potřebu.

veřejná třída Autor

    {

public int Id {get; soubor; }

public string FirstName {get; soubor; }

veřejný řetězec Příjmení {get; soubor; }

    }

třídní program

    {

static void Main (řetězec [] args)

        {

Autoři IList = nový seznam () {

new Author () {Id = 1, FirstName = "John",

Příjmení = "Willey"},

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

Příjmení = "Smith"},

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

Příjmení = "Ruffner"},

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

Příjmení = "Kanjilal"}

                };

var result = od a v autorech

vyberte nový

                         {

Id = a.Id,

Jméno = a.FirstName + "\ t" + a.Poslední jméno

                         };

foreach (var data ve výsledku)

Console.WriteLine (data.nazev);

Console.Read ();

        }

    }

Anonymní typy vám umožňují vytvořit typ a rychle jej vytvořit instanci, aniž byste museli dříve deklarovat typ. Z pohledu CLR je anonymní typ jen dalším referenčním typem. Kompilátor poskytuje název každého anonymního typu pod kryty.

Anonymní typy jsou odvozeny z Object třídy. To je důvod, proč můžete vrhnout anonymní typ pouze na instanci typu Object. Všimněte si také, že návratový typ metody, vlastnosti, události, delegáta atd. Nemůže být anonymním typem.

Jak udělat více v C #:

  • Kdy použít abstraktní třídu vs. rozhraní v C #
  • Jak pracovat s AutoMapperem v C #
  • Jak používat výrazy lambda v C #
  • Jak pracovat s delegáty Action, Func a Predicate v C #
  • Jak používat Dapper ORM v C #
  • Jak implementovat jednoduchý záznamník v C #
  • Jak pracovat s log4net v C #
  • Jak pracovat s delegáty v C #
  • Jak pracovat s atributy v C #
  • Jak používat návrhový vzor muší váhy v C #
  • Jak implementovat vzor návrhu úložiště v C #
  • Zkoumání virtuálních a abstraktních metod v C #
  • Jak pracovat s odrazem v C #
  • Jak pracovat se souborovým systémem v C #
$config[zx-auto] not found$config[zx-overlay] not found