Как да използвам анонимни типове в C #

Анонимен тип е тип, който няма име. Можете да използвате анонимен тип, за да капсулирате набор от свойства само за четене в една единица - и не е необходимо да дефинирате анонимния тип предварително. Тази статия разглежда какво представляват анонимните типове, защо са важни и как можем да работим с анонимни типове в C #.

За да работите с примерите за кодове, предоставени в тази статия, трябва да имате Visual Studio 2019 инсталиран във вашата система. Ако все още нямате копие, можете да изтеглите Visual Studio 2019 тук. 

Създайте проект за конзолно приложение в Visual Studio

Първо, нека създадем проект за приложение на конзола .NET Core в Visual Studio. Ако приемем, че Visual Studio 2019 е инсталиран във вашата система, следвайте стъпките, описани по-долу, за да създадете нов проект за приложение на конзола .NET Core в Visual Studio.

  1. Стартирайте Visual Studio IDE.
  2. Кликнете върху „Създаване на нов проект“.
  3. В прозореца „Създаване на нов проект“ изберете „Console App (.NET Core)“ от показания списък с шаблони.
  4. Щракнете върху Напред.
  5. В показания след това прозорец „Конфигуриране на вашия нов проект“ посочете името и местоположението на новия проект.
  6. Щракнете върху Създаване.

Това ще създаде нов проект за приложение на конзола .NET Core в Visual Studio 2019. Ще използваме този проект в следващите раздели на тази статия, за да илюстрираме как можем да работим с анонимни типове в C #.

Разберете анонимните типове в C #

По същество анонимният тип е референтен тип и може да бъде дефиниран с помощта на ключовата дума var. Можете да имате едно или повече свойства в анонимен тип, но всички те са само за четене. За разлика от клас C #, анонимният тип не може да има поле или метод - той може да има само свойства.

Можете да получите достъп до анонимен тип или неговите свойства вътре в метода, където анонимният тип е дефиниран. С други думи, достъпността на анонимен тип е ограничена до обхвата, където е дефиниран.

Използвайте анонимен тип в C #

Нека сега да копаем в някакъв код. Помислете за следния анонимен тип.

var автор = нов

{

  FirstName = "Joydip",

  LastName = "Kanjilal",

  Адрес = "Хайдерабад, ИНДИЯ"

};

В предходния кодов фрагмент автор е името на екземпляр от анонимен тип, създаден с помощта на новата ключова дума. (Името на самия анонимен тип е известно само от компилатора.) Този анонимен тип съдържа три свойства, а именно FirstName, LastName и Address. Всички тези свойства са от типа низ. Имайте предвид, че когато работите с анонимен тип, не е необходимо да указвате типа на свойството, преди да го инициализирате.

Можете да използвате следния кодов фрагмент за достъп до трите свойства на горния анонимен тип.

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

Console.WriteLine ("Адрес: {0}", автор.Адрес);

Използвайте вложен анонимен тип в C #

Анонимните типове също могат да бъдат вложени. Тоест, можете да имате анонимен тип като свойство в друг анонимен тип. Ето пример, който илюстрира това.

var автор = нов

{

  FirstName = "Joydip",

  LastName = "Kanjilal",

  Адрес = нов {Град = "Хайдерабад", Държава = "ИНДИЯ"}

};

Можете да получите достъп до свойствата на този вложен анонимен тип, както е показано в кодовия фрагмент, даден по-долу.

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

Console.WriteLine ("Адрес: {0}", автор.Address.City);

Пълната програма е дадена по-долу за справка.

static void Main (низ [] аргументи)

{

  var автор = нов

  {

     FirstName = "Joydip",

     LastName = "Kanjilal",

     Адрес = нов {Град = "Хайдерабад", Държава = "ИНДИЯ"}

  };

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

  Console.WriteLine ("Адрес: {0}", автор.Address.City);

  Console.Read ();

}

Използвайте анонимни типове с LINQ 

Клаузата Select в LINQ създава и връща анонимен тип като резултат. Следният кодов фрагмент илюстрира това.

Помислете за следния клас с име Автор.

публична класа Автор

{

  public int Id {get; комплект; }

  публичен низ FirstName {get; комплект; }

  публичен низ LastName {get; комплект; }

}

Следният кодов фрагмент показва как можете да създадете списък с автори.

Автори на IList =

нов списък ()

{

  нов автор () {Id = 1, FirstName = "John", LastName = "Willey"},

  нов автор () {Id = 2, FirstName = "Steve", LastName = "Smith"},

  нов автор () {Id = 3, FirstName = "Bill", LastName = "Ruffner"},

  нов автор () {Id = 4, FirstName = "Joydip", LastName = "Kanjilal"}

};

И следващият кодов фрагмент показва как можете да се възползвате от клаузата Select в LINQ заедно с анонимен тип, за да върнете резултата при изпълнение на заявка.

var резултат = от a в авторите изберете ново

{

   Id = a.Id,

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

};

Вече можете да показвате авторските идентификатори и имена в прозореца на конзолата, както е показано в кодовия фрагмент по-долу.

foreach (var данни в резултат)

      Console.WriteLine (data.Name);

Пълната програма е дадена по-долу за справка.

публична класа Автор

    {

        public int Id {get; комплект; }

        публичен низ FirstName {get; комплект; }

        публичен низ LastName {get; комплект; }

    }

    клас Програма

    {

        static void Main (низ [] аргументи)

        {

            Автори на IList = нов списък () {

                        нов автор () {Id = 1, FirstName = "John",

                                      LastName = "Willey"},

                        нов автор () {Id = 2, FirstName = "Steve",

                                      LastName = "Smith"},

                        нов автор () {Id = 3, FirstName = "Bill",

                                      LastName = "Ruffner"},

                        нов автор () {Id = 4, FirstName = "Joydip",

                                      LastName = "Kanjilal"}

                };

            var резултат = от a в авторите

                         изберете нов

                         {

                             Id = a.Id,

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

                         };

            foreach (var данни в резултат)

                Console.WriteLine (data.Name);

            Console.Read ();

        }

    }

Анонимните типове ви позволяват да създадете тип и да го създадете бързо, без да се налага да декларирате типа по-рано. От гледна точка на CLR, анонимният тип е просто друг референтен тип. Компилаторът предоставя име на всеки анонимен тип под кориците.

Анонимните типове произлизат от клас Object. Ето защо можете да прикачите анонимен тип само към екземпляр от тип Обект. Имайте предвид също, че типът на връщане на метод, свойство, събитие, делегат и т.н. не може да бъде анонимен тип.

Как да направите повече в C #:

  • Кога да се използва абстрактен клас срещу интерфейс в C #
  • Как да работя с AutoMapper в C #
  • Как да използвам ламбда изрази в C #
  • Как да работя с Action, Func и Predicate делегати в C #
  • Как да използваме Dapper ORM в C #
  • Как да внедрите прост регистратор в C #
  • Как да работя с log4net в C #
  • Как да работя с делегати в C #
  • Как да работя с атрибути в C #
  • Как да използвам шаблона за дизайн на мухата в C #
  • Как да приложим шаблона за проектиране на хранилището в C #
  • Проучване на виртуални и абстрактни методи в C #
  • Как да работя с отражение в C #
  • Как да работя с файлова система за наблюдение в C #