Классы

Классы в 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);
}
просмотров