Преимущество этого синтаксиса связано с сокращением объема клавиатурного ввода. Хотя вложенные фигурные скобки могут затруднять чтение кода, если не позаботиться о надлежащем форматировании, вы только вообразите себе объем кода, который пришлось бы написать для наполнения следующего списка List объектов Rectangle без использования синтаксиса инициализации коллекций:

List myListOfRects = new List

{

  new Rectangle {

    Height = 90, Width = 90,

    Location = new Point { X = 10, Y = 10 }},

  new Rectangle {

    Height = 50,Width = 50,

    Location = new Point { X = 2, Y = 2 }},

};

foreach (var r in myListOfRects)

{

  Console.WriteLine(r);

}

<p id="AutBody_Root387">Работа с классом List<t></t></p>

Создайте новый проект консольного приложения под названием FunWithGenericCollections. Добавьте новый файл по имени Person.cs и поместите в него показанный ниже код (это тот же самый код с определением предыдущего класса Person):

namespace FunWithGenericCollections

{

  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, который уже применялся ранее в главе. Класс List используется чаще других классов из пространства имен System.Collections.Generic, т.к. он позволяет динамически изменять размер контейнера. Чтобы ознакомиться с его особенностями, добавьте в класс Program метод UseGenericList(), в котором задействован класс List для манипулирования набором объектов Person; вспомните, что в классе Person определены три свойства (Age, FirstName и LastName), а также специальная реализация метода ToString():

static void UseGenericList()

{

  // Создать список объектов Person и заполнить его с помощью

  // синтаксиса инициализации объектов и коллекции.

  List people = new List()

  {

    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);

  }

}

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

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