Классы
Классы в C# как свои типы данных: создание и использование
Кроме каких-то базовых типов данных, мы еще можем создавать и свои типы данных. Все в этом мире может быть типом данных – напитки, здания, компьютеры и прочее. Все из этих сущностей хранят в себе какие-то пункты, атрибуты, по которым их можно характеризовать
Например, возьмем пиццу. Пиццы бывают разные: маргарита, гавайская, 4 сыра, однако все это пицца. Также пиццы бывают разного диаметра – 26, 30, 38 дюймов. Опять же, размер разный, но пицца остается пиццей
Создание класса
Давайте создадим тип данных «Pizza». Для этого нам нужно создать новый класс. Нажимаем ПКМ по названию нашего проекта, находим «Добавить» и в списке находим «Класс»

В появившемся диалоговом окне подтвердим, что это класс, дадим название нашему классу внизу экрана, а затем нажмем добавить. Я назову класс Pizza, так как хочу, чтобы мой будущий тип данных назывался также

Перед нами создается точно такой же класс, как и Program, только без метода Main внутри и с другим именем. Внутри этого класса мы как раз и будем создавать некие атрибуты, характеризующие нашу пиццу
namespace ConsoleApp2{ internal class Pizza { }}Выше мы уже перечислили, что
- У пиццы есть название – маргарита, гавайская, 4 сыра - текст
- У пиццы есть диаметр – 28, 30, 38 – целое число
Давайте прямо внутри этого класса создадим такие переменные
internal class Pizza{ string Name; int Diameter;}Однако, чтобы эти переменные работали не только в этом классе, им нужно добавить слово public перед их типом данных. Более подробно поговорим об этом в теме с инкапсуляцией.
internal class Pizza{ public string Name; public int Diameter;}На этом, создание нашего нового типа данных закончено. Теперь, как его использовать?
Использование новых типов данных
После создания нового типа данных, давайте вернемся в наш класс Program и попробуем поработать с нашим типом данных.
Имя нашего типа данных такое же, как у названия класса – Pizza. Классы – сложный тип данных, значит создавать новую переменную мы будем по шаблону
типданных название = new типданных;
В конце, как всегда, ставим то, на что ругается код, в этом случае – круглые скобки. По-умному – мы создаем новый экземпляр класса
Например, я хочу создать маргариту
![]()
Однако я помню, что у меня внутри пиццы есть еще две переменные – Name и Diameter, я также хочу задать им значения.
Я хочу использовать маргариту, а именно (пишу точку), название. Оно будет равно «маргарита»
![]()
Я хочу использовать маргариту, а именно, диаметр. Оно будет равно 28
![]()
Таким же образом я могу вывести значения из маргариты
Pizza margarita = new Pizza();margarita.Name = "Маргарита";margarita.Diameter = 28;
Console.WriteLine(margarita.Name);Console.WriteLine(margarita.Diameter);
Также, я могу сразу же при создании своей переменной дать ей значения, указав в фигурных скобках что к чему относится. Принцип такой же, как в массивах, в фигурных скобках мы передаем все элементы через запятую. Но так как у элементов есть еще и название, то его мы тоже указываем.
Pizza margarita = new Pizza(){ Name = "Маргарита", Diameter = 28};
Console.WriteLine(margarita.Name);Console.WriteLine(margarita.Diameter);
Коллекции с типом данных
Также, раз это самый настоящий тип данных, то с помощью него можно делать различные виды коллекций — массивы и листы.
//меню из 10 пиццPizza[] menu = new Pizza[10];
//меню где могут быть разное кол-во пиццList<Pizza> menuList = new List<Pizza>();Внутрь этих коллекций я уже буду добавлять не просто значение, а целую переменную с данными о пицце
Pizza margarita = new Pizza();margarita.Name = "Mаргарита";margarita.Diameter = 28;
//меню из 10 пиццPizza[] menu = new Pizza[10];menu[0] = margarita;
//меню где могут быть разное кол-во пиццList<Pizza> menuList = new List<Pizza>();menuList.Add(margarita);А также при перечислении циклом мне необходимо будет работать именно с этим типом данных, т.е. чтобы что-то вывести, нам опять нужно писать точку и что именно мы хотим взять оттуда
foreach (Pizza pos in menuList){ Console.WriteLine(pos.Name); Console.WriteLine(pos.Diameter);}