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

Для использования нового класса Car в показанном ниже коде из файла Program.cs создаются два его экземпляра — один через инициализацию объекта, а другой посредством специального конструктора:


using System;

using FunWithRecords;

Console.WriteLine("Fun with Records!");


// Использовать инициализацию объекта

Car myCar = new Car

{

    Make = "Honda",

    Model = "Pilot",

    Color = "Blue"

};


Console.WriteLine("My car: ");

DisplayCarStats(myCar);

Console.WriteLine;


// Использовать специальный конструктор

Car anotherMyCar = new Car("Honda", "Pilot", "Blue");

Console.WriteLine("Another variable for my car: ");

DisplayCarStats(anotherMyCar);

Console.WriteLine;


// Попытка изменения свойства приводит к ошибке на этапе компиляции.

// myCar.Color = "Red";

Console.ReadLine;


static void DisplayCarStats(Car c)

{

  Console.WriteLine("Car Make: {0}", c.Make);

  Console.WriteLine("Car Model: {0}", c.Model);

  Console.WriteLine("Car Color: {0}", c.Color);

}


Вполне ожидаемо оба метода создания объекта работают, значения свойств отображаются, а попытка изменить свойство после конструирования приводит к ошибке на этапе компиляции.

Чтобы создать тип записи CarRecord, добавьте к проекту новый файл по имени CarRecord.cs со следующим кодом:


record CarRecord

{

  public string Make { get; init; }

  public string Model { get; init; }

  public string Color { get; init; }

  public CarRecord {}

  public CarRecord (string make, string model, string color)

  {

    Make = make;

    Model = model;

    Color = color;

  }

}


Запустив приведенный далее код из Program.cs, вы можете удостовериться в том, что поведение записи CarRecord будет таким же, как у класса Car со средствами доступа только для инициализации:


Console.WriteLine("/*************** RECORDS *********************/");

// Использовать инициализацию объекта

CarRecord myCarRecord = new CarRecord

{

    Make = "Honda",

    Model = "Pilot",

    Color = "Blue"

};

Console.WriteLine("My car: ");

DisplayCarRecordStats(myCarRecord);

Console.WriteLine;

// Использовать специальный конструктор

CarRecord anotherMyCarRecord = new CarRecord("Honda", "Pilot", "Blue");

Console.WriteLine("Another variable for my car: ");

Console.WriteLine(anotherMyCarRecord.ToString);

Console.WriteLine;

// Попытка изменения свойства приводит к ошибке на этапе компиляции.

// myCarRecord . Color = "Red";

Console.ReadLine;


Хотя мы пока еще не обсуждали эквивалентность (см. следующий раздел) или наследование (см. следующую главу) с типами записей, первое знакомство с записями не создает впечатления, что они обеспечивают большое преимущество. Текущий пример записи CarRecord включал весь ожидаемый связующий код. Заметное отличие присутствует в выводе: метод ToString для типов записей более причудлив, как видно в показанном ниже фрагменте вывода:


/*************** RECORDS *********************/

My car:

CarRecord { Make = Honda, Model = Pilot, Color = Blue }

Another variable for my car:

CarRecord { Make = Honda, Model = Pilot, Color = Blue }


Но взгляните на следующее обновленное определение записи Car:


record CarRecord(string Make, string Model, string Color);


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

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

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

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

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

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

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

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

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