Шрифт:
Интервал:
Закладка:
{
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}
};
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})// Вывести количество элементов в списке.
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
- Понимание SQL - Мартин Грубер - Базы данных