Читаем Язык программирования C#9 и платформа .NET5 полностью

  Console.WriteLine("Items in list: {0}", people.Count);


  // Скопировать данные в новый массив.

  Person[] arrayOfPeople = people.ToArray;

  foreach (Person p in arrayOfPeople)  // Вывести имена

  {

    Console.WriteLine("First Names: {0}", p.FirstName);

  }

}


Здесь для наполнения списка List объектами применяется синтаксис инициализации в качестве сокращенной записи многократного вызова метода Add. После вывода количества элементов в коллекции (и прохода по всем элементам) вызывается метод Insert. Как видите, метод Insert позволяет вставлять новый элемент в List по указанному индексу.

Наконец, обратите внимание на вызов метода ToArray, который возвращает массив объектов Person, основанный на содержимом исходного списка List. Затем осуществляется проход по всем элементам данного массива с использованием синтаксиса индексатора массива. Вызов метода UseGenericList в операторах верхнего уровня приводит к получению следующего вывода:


***** Fun with Generic Collections *****

Items in list: 4

Name: Homer Simpson, Age: 47

Name: Marge Simpson, Age: 45

Name: Lisa Simpson, Age: 9

Name: Bart Simpson, Age: 8


->Inserting new person.

Items in list: 5

First Names: Homer

First Names: Marge

First Names: Maggie

First Names: Lisa

First Names: Bart


В классе List определено множество дополнительных членов, представляющих интерес, поэтому за полным их описанием обращайтесь в документацию. Давайте рассмотрим еще несколько обобщенных коллекций, в частности Stack, Queue и SortedSet, что должно способствовать лучшему пониманию основных вариантов хранения данных в приложении.

Работа с классом Stack

Класс Stack представляет коллекцию элементов, которая обслуживает элементы в стиле "последний вошел — первый вышел" (LIFO). Как и можно было ожидать, в Stack определены члены Push и Pop, предназначенные для вставки и удаления элементов из стека. Приведенный ниже метод создает стек объектов Person:


static void UseGenericStack

{

  Stack stackOfPeople = new;

  stackOfPeople.Push(new Person { FirstName = "Homer",

                                  LastName = "Simpson", Age = 47 });

  stackOfPeople.Push(new Person { FirstName = "Marge",

                                  LastName = "Simpson", Age = 45 });

  stackOfPeople.Push(new Person { FirstName = "Lisa",

                                  LastName = "Simpson", Age = 9 });


  // Просмотреть верхний элемент, вытолкнуть его и просмотреть снова..

  Console.WriteLine("First person is: {0}", stackOfPeople.Peek);

  Console.WriteLine("Popped off {0}", stackOfPeople.Pop);

  Console.WriteLine("\nFirst person is: {0}", stackOfPeople.Peek);

  Console.WriteLine("Popped off {0}", stackOfPeople.Pop);

  Console.WriteLine("\nFirst person item is: {0}", stackOfPeople.Peek);

  Console.WriteLine("Popped off {0}", stackOfPeople.Pop);


  try

  {

    Console.WriteLine("\nnFirst person is: {0}", stackOfPeople.Peek);

    Console.WriteLine("Popped off {0}", stackOfPeople.Pop);

  }

  catch (InvalidOperationException ex)

  {

    Console.WriteLine("\nError! {0}", ex.Message);  // Ошибка! Стек пуст

  }

}


В коде строится стек, который содержит информацию о трех лицах, добавленных в алфавитном порядке следования их имен: Homer, Marge и Lisa. Заглядывая (посредством метода Реек) в стек, вы будете всегда видеть объект, находящийся на его вершине; следовательно, первый вызов Реек возвращает третий объект Person. После серии вызовов Pop и Peek стек, в конце концов, опустошается, после чего дополнительные вызовы Реек и Pop приводят к генерации системного исключения. Вот как выглядит вывод:


Перейти на страницу:

Похожие книги

Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Нил Форд , Билл де Ора , Майкл Хайгард

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT