Const C# | Константы C# и readonly C# переменные

Константа — прекрасное греческое слово, обозначающее постоянство. Каким же боком это относится к программированию? Итак, предположим, нам нужно одна или несколько постоянных, которые ни при каких сценариях не должны меняться. Как вы понимаете, простая переменная в данном случае не подойдет, ведь её значение может быть изменено. Поэтому нам нужно рассмотреть константы C# и чем они отличаются от переменных только для чтения readonly C#.

Смотрите моё видео на тему константы 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-канал. Там еще больше полезного и интересного для программистов.