{
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
и добавьте следующие операторы
using
:
using 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: 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