Sobes.tech
Junior — Middle
90

Какие отличия есть между ключевыми словами const и readonly в C#?

Компании, где спрашивали
Сибирские Технологические Решения
Бренд Монитор

Ответ от нейросети

sobes.tech AI

В C# ключевые слова const и readonly используются для объявления неизменяемых значений, но имеют важные отличия:

  • const

    • Значение должно быть известно на этапе компиляции.
    • Объявляется и инициализируется в момент объявления.
    • Является статическим по умолчанию (неявно static).
    • Используется для констант, которые не изменятся никогда и известны заранее (например, числа, строки).
    • Пример:
      const double Pi = 3.14159;
      
  • readonly

    • Значение может быть установлено либо при объявлении, либо в конструкторе.
    • Позволяет иметь разные значения для разных экземпляров класса (если не статическое).
    • Значение нельзя изменить после завершения конструктора.
    • Используется, когда значение известно только во время выполнения, но не должно изменяться после инициализации.
    • Пример:
      public class MyClass
      {
          public readonly DateTime CreationTime;
      
          public MyClass()
          {
              CreationTime = DateTime.Now;
          }
      }
      

Таким образом, const — это компилируемая константа, а readonly — неизменяемое после инициализации поле, которое может быть установлено во время выполнения.