Найти в Дзене
"Мы"-Прогер

Изучаем C# - Конструкторы, статические поля и методы

Классы как составные типы данных - https://dzen.ru/a/aXjruZrLtAUxqw3e?share_to=link Что такое методы в классах - https://dzen.ru/a/aXn8iXxn-2T6hDhr?share_to=link Чтобы создать объект класса User, мы использовали new User(). Например, в этом куске кода мы создали два объекта: один положили в переменную myUser, а второй распечатали и тут же забыли: Также мы изучили методы класса - это действия, которые можно делать над объектами этого класса. Методы пишутся с круглыми скобками: Так вот, круглые скобки у new User() не случайны. На самом деле, это вызов метода, только особого - конструктора. Конструктор - это особый метод, который создаёт новый объект класса и заодно может как-либо настраивать его. Например, при создании объекта DateTime мы можем указать год, месяц и день: Как и любые другие методы, конструкторы могут иметь перегрузки. Например, здесь мы видим варианты конструктора без времени и со временем. Конструктор всегда называется так же, как класс, и перед его вызовом всегда ставит
Оглавление

Предыдущие статьи:

Классы как составные типы данных - https://dzen.ru/a/aXjruZrLtAUxqw3e?share_to=link

Что такое методы в классах - https://dzen.ru/a/aXn8iXxn-2T6hDhr?share_to=link

Что такое конструктор класса

Чтобы создать объект класса User, мы использовали new User(). Например, в этом куске кода мы создали два объекта: один положили в переменную myUser, а второй распечатали и тут же забыли:

Также мы изучили методы класса - это действия, которые можно делать над объектами этого класса. Методы пишутся с круглыми скобками:

-2

Так вот, круглые скобки у new User() не случайны. На самом деле, это вызов метода, только особого - конструктора. Конструктор - это особый метод, который создаёт новый объект класса и заодно может как-либо настраивать его. Например, при создании объекта DateTime мы можем указать год, месяц и день:

-3

Как и любые другие методы, конструкторы могут иметь перегрузки. Например, здесь мы видим варианты конструктора без времени и со временем.

Конструктор всегда называется так же, как класс, и перед его вызовом всегда ставится ключевое слово new.

Создание конструкторов будет разобрано в теме "Пишем методы и конструкторы сами".

Сделайте сохранение в Git "Конструкторы класса".

Статические поля и методы

Если обычные поля и методы хранятся в каждом объекте класса, то статические поля и методы хранятся в самом классе. Например, минимальное и максимальное значения типа int хранятся в самом типе int, а не в каждом числе:

-4

Логично, не правда ли?

Чтобы обратиться к статическому полю или методу, нужно набрать "класс точка поле/метод". Например, Console.WriteLine() - это статический метод класса Console:

-5

Этот метод принадлежит самому классу Console, так что чтобы вызвать его, нужно набрать Console.WriteLine(), а не объектКонсоли123.WriteLine(). Это возможно, потому что консоль одна общая на всё приложение. К тому же, это удобно: для печати в консоль не нужно иметь у себя объект консоли, достаточно обратиться к самому классу, который виден в любой точке программы.

Другой статический метод - DateTime.Parse(). Он создаёт новый объект DateTime, но вызывается не как конструктор с new DateTime(), а как статический метод:

-6

Очевидно, он не может быть обычным методом - потому что когда его вызывают, объекта класса DateTime ещё нет. Можно было бы сделать его как одну из перегрузок конструктора, но сделали вот так. Довольно часто статические методы создают новые объекты класса, поэтому если вы не нашли нужную перегрузку конструктора, то наберите название класса с точкой и посмотрите в подсказке, какие есть статические методы.

-7

Как создать статическое поле в классе?

Чтобы создать статическое поле, нужно добавить модификатор static к его объявлению:

-8

Теперь вернёмся к коду, где мы создали двух пользователей:

-9

Допишем туда проверку, что myUser.Birthdate находится между двумя разрешёнными датами:

-10

Сделайте сохранение в Git под названием "Статические поля класса".

Задача

Добавьте в класс User статические поля "Минимальная длина логина" и "Минимальная длина пароля" и проверьте логин и пароль на длину. Длину объекта типа string можно узнать с помощью (обычного) свойства Length.

Также проверьте, что логин и пароль не пусты, с помощью статического метода IsNullOrWhiteSpace(строка) типа данных string, и распечатайте сообщения "Логин пуст или содержит одни пробелы.", "Пароль пуст или содержит одни пробелы.".

Редактирование последнего коммита в Git

В случае, если вы ещё не залили последний коммит (то есть сохранение) в Git на сервер, его ещё можно отредактировать. Для этого в окне Commit делаем всё как обычно, но ставим галочку Amend:

Как отредактировать последний коммит в Git
Как отредактировать последний коммит в Git

Если коммит уже был залит на сервер, это действие не отредактирует его, а создаст новый коммит.

Далее

Далее мы вернёмся к базовым командам C# по написанию логики и к работе с переменным числом объектов.

Списки List<T>. Отладка. Циклы foreach - https://dzen.ru/a/aYSJfrvqNHO5eQ8v?share_to=link

Оглавление - https://dzen.ru/a/aXisxwt_Mnz2qTjs?share_to=link