Readonly: принцип работы и основные применения

Ключевое слово readonly в C# используется для объявления поля, которое можно только прочитать, но не изменить значение после инициализации. Таким образом, после инициализации значение поля становится неизменяемым.

Например, объявим класс с полем readonly и присвоим ему значение в конструкторе:


public class ExampleClass
{
    private readonly int _readOnlyField;
    public ExampleClass(int readOnlyValue)
    {
        _readOnlyField = readOnlyValue;
    }
    public int GetReadOnlyValue()
    {
        return _readOnlyField;
    }
}

Значение поля readOnlyField мы можем получить через метод GetReadOnlyValue, но изменить его значение уже нельзя.

Попытка изменения поля будет приводить к ошибке компиляции:


ExampleClass example = new ExampleClass(10);
example._readOnlyField = 20; // Ошибка компиляции

Ключевое слово readonly также может использоваться в структурах и в константах классов:


public struct ExampleStruct
{
    public readonly int ReadOnlyField;
}
public class ExampleConstants
{
    public const int ReadOnlyValue = 5;
    public readonly int ReadOnlyField;
    public ExampleConstants()
    {
        ReadOnlyField = ReadOnlyValue;
    }
}

В данном примере мы видим, что в структурах и константах классов мы также можем объявить поля с модификатором readonly.

Важно отметить, что readonly поля могут быть изменены только в конструкторе класса или структуры. Если мы попытаемся изменить значение readonly поля в другом месте кода, то получим ошибку компиляции.

Таким образом, использование модификатора readonly увеличивает безопасность кода и позволяет избежать возможных ошибок, связанных с изменением значений переменных в неправильных местах.

Похожие вопросы на: "readonly "

Threads - нить для творчества
CSS Line Height: The Key to Perfecting Your Website's Readability and Design
Python Pickle: Understanding the Magic of Serialization
Массив строк в языке C: основы и примеры
Trojan Wacatac: что это за вирус и как избежать его атаки
W3Schools SQL: Учебник для начинающих и продвинутых
Input range: управление числовыми значениями на веб-страницах
Embarcadero Dev C - разработка приложений на C++
Spring Java - что это?
Как выровнять текст по вертикали с помощью CSS?