Язык программирования C#9 и платформа .NET5
Часть 205 из 642 Информация о книге
{public class Person{public int Age {get; set;}public string FirstName {get; set;}public string LastName {get; set;}public Person(){}public Person(string firstName, string lastName, int age){Age = age;FirstName = firstName;LastName = lastName;}public override string ToString(){return $"Name: {FirstName} {LastName}, Age: {Age}";}}}Удалите сгенерированный код из файла
и добавьте следующие операторыProgram.cs:usingusing System;using System.Collections.Generic;using FunWithGenericCollections;Первым будет исследоваться обобщенный класс
, который уже применялся ранее в главе. КлассList<T>используется чаще других классов из пространства именList<T>, т.к. он позволяет динамически изменять размер контейнера. Чтобы ознакомиться с его особенностями, добавьте в классSystem.Collections.GenericметодProgram, в котором задействован классUseGenericList()для манипулирования набором объектовList<T>; вспомните, что в классеPersonопределены три свойства (Person,AgeиFirstName), а также специальная реализация методаLastName:ToString()static void UseGenericList(){// Создать список объектов Person и заполнить его с помощью// синтаксиса инициализации объектов и коллекции.List<Person> people = new List<Person>(){new Person {FirstName= "Homer", LastName="Simpson", Age=47},new Person {FirstName= "Marge", LastName="Simpson", Age=45},new Person {FirstName= "Lisa", LastName="Simpson", Age=9},new Person {FirstName= "Bart", LastName="Simpson", Age=8}};// Вывести количество элементов в списке.Console.WriteLine("Items in list: {0}", people.Count);// Выполнить перечисление по списку.foreach (Person p in people){Console.WriteLine(p);}// Вставить новый объект Person.Console.WriteLine("\n->Inserting new person.");people.Insert(2, new Person { FirstName = "Maggie",LastName = "Simpson", Age = 2 });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<T>. После вывода количества элементов в коллекции (и прохода по всем элементам) вызывается методAdd(). Как видите, методInsert()позволяет вставлять новый элемент вInsert()по указанному индексу.List<T>Наконец, обратите внимание на вызов метода
, который возвращает массив объектовToArray(), основанный на содержимом исходного спискаPerson. Затем осуществляется проход по всем элементам данного массива с использованием синтаксиса индексатора массива. Вызов методаList<T>в операторах верхнего уровня приводит к получению следующего вывода:UseGenericList()***** Fun with Generic Collections *****Items in list: 4Name: Homer Simpson, Age: 47Name: Marge Simpson, Age: 45Name: Lisa Simpson, Age: 9Name: Bart Simpson, Age: 8->Inserting new person.Items in list: 5First Names: HomerFirst Names: MargeFirst Names: Maggie