Константа — прекрасное греческое слово, обозначающее постоянство. Каким же боком это относится к программированию? Итак, предположим, нам нужно одна или несколько постоянных, которые ни при каких сценариях не должны меняться. Как вы понимаете, простая переменная в данном случае не подойдет, ведь её значение может быть изменено. Поэтому нам нужно рассмотреть константы C# и чем они отличаются от переменных только для чтения readonly C#.
Подпишись на группу Вконтакте и Телеграм-канал. Там еще больше полезного контента для программистов.
А на YouTube-канале ты найдешь обучающие видео по программированию. Подписывайся!
Константы — const C#
К примеру мы пишем программу для вычисления параметров окружности. Есть множество значений, которые должны быть неизменными. Например математическая константа pi = 3.14. Рассмотрим реализацию простейшего калькулятора.
/// <summary> /// Точка входа в программу. /// </summary> static void Main(string[] args) { // Константа пи const double pi = 3.14; // Предлагаем пользователю выбор. Console.WriteLine("Выберите, что нужно вычислить: " + "\r\n 1. Площадь." + "\r\n 2. Периметр. \r\n"); var choice = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Радиус окружности"); var radius = Convert.ToInt32(Console.ReadLine()); // Обрабатываем выбор. switch (choice) { case 1: Console.WriteLine($"Площадь окружности с радиусом {radius} равна {pi * Math.Pow(radius, 2)}."); break; case 2: Console.WriteLine($"Периметр окружности с радиусом {radius} равен {2 * pi * radius}."); break; default: Console.WriteLine("Так о чем мы?"); break; } Console.ReadKey(); }
При попытке изменить значение переменной pi мы получим ошибку. Это и является главной особенностью констант.
Переменные только для чтения — readonly C#
В объектно — ориентированном программировании может использоваться ключевое слово readonly. В данной случае основная фишка состоит в том, что установка значения переменной может проходить не только прямым путем, как мы поступали с константами, но и при инициализации объекта. К примеру, нам для каждого объекта класса нужно установить своё значение константы. И именно для этого случая отлично подходят переменные с ключевым словом readonly. Давайте рассмотрим на примере.
/// <summary> /// Класс "Личные данные". /// </summary> public class Person { /// <summary> /// Фамилия. /// </summary> public string Lastname; /// <summary> /// Имя. /// </summary> public readonly string Firstname; /// <summary> /// Отчество. /// </summary> public readonly string Midname; /// <summary> /// Пол /// </summary> public readonly string Gender; /// <summary> /// Дата рождения. /// </summary> public readonly DateTime Birthdate; /// <summary> /// Конструктор класса. /// </summary> /// <param name="lastname">Фамилия. </param> /// <param name="firstname">Имя. </param> /// <param name="midname">Отчество. </param> /// <param name="gender"> Пол.</param> /// <param name="birthdate"> Дата рождения.</param> public Person(string lastname, string firstname, string midname, string gender, DateTime birthdate) { Lastname = lastname; Firstname = firstname; Midname = midname; Gender = gender; Birthdate = birthdate; } }
Как вы видите, свойства имя, отчество, пол и дата рождения отмечены ключевым словом readonly. Это означает, что единожды установив значения этих параметров в конструкторе, изменить их после мы не сможем. Подобный класс может послужить при разработке приложения для больницы, паспортного стола или иной программы, в которой использовались бы персональные данные людей.
Где можно это использовать? Да в любом месте, где по вашему мнению значение переменной не должно меняться в ходе работы программы. При этом важно не забывать различия между const и readonly.
Пожалуй, вот и все, что следует знать по данной теме. Удачных вам экспериментов, коллеги.
Также рекомендую ознакомиться со статьей Циклы в языке программирования C#. А также подписывайтесь на группу ВКонтакте, Telegram и YouTube-канал. Там еще больше полезного и интересного для программистов.