Ключевое слово в языке C# readonly используется для обозначения в программе полей класса (Fields). Поле – это что-то похожее на константу класса: значение полю присвоить можно, а изменить нельзя. Придать значение полю класса можно либо при объявлении переменных класса, либо в конструкторе.

    public class Player
    {
        public readonly string Name;
        public readonly string LastName = "No lastname";
        public Player()
        {
            Name = "Alexey";
        }
    }

    class Program
    {
        static void Main()
        {
            Player player = new Player();
            Console.WriteLine("Name: {0}", player.Name);
            Console.WriteLine("LastName: {0}", player.LastName);
        }
    }

 

Результатом программы будет:

Name: Alexey

LastName: No lastname

 

Если в классе Player реализовать метод изменения фамилии ChangeLastName() и попытаться изменить значаение LastName, то компилятор выдаст сообщение об ошибке:

A readonly field cannot be assigned to (except in a constructor or a variable initializer)

        public void ChangeLastName()
        {
            LastName = "New LastName";
        }