readonly 키워드는 멤버 변수를 상수로 선언하는 데 사용되지만 런타임에 값을 계산할 수 있습니다. 이것은 const 수정자로 선언된 상수와 다릅니다. 이 상수는 컴파일 시간에 값을 설정해야 합니다. readonly를 사용하면 선언 또는 해당 필드가 속한 개체의 생성자에서 필드 값을 설정할 수 있습니다.
'readonly' 수정자는 총 4가지 컨텍스트에서 사용할 수 있습니다.
-
필드 선언
-
읽기 전용 구조체 선언
-
읽기 전용 멤버 정의
-
참조 읽기 전용 메서드 반환
필드 선언 컨텍스트를 사용할 때 할당이 발생할 수 있는 유일한 시간은 선언될 때 또는 동일한 클래스의 생성자가 호출될 때라는 것을 알아야 합니다.
예
class Program{ readonly string Name; public Program(){ Name = "Name"; } static void Main(string[] args){ Program a = new Program(); System.Console.WriteLine(a.Name); Console.ReadLine(); } }
출력
Name
읽기 전용 구조체
public readonly struct Server{ public readonly string Name; public Server(string name){ Name = name; } } class Program{ static void Main(string[] args){ Server a = new Server("Domain Controller"); System.Console.WriteLine(a.Name); Console.ReadLine(); } }
출력
Domain Controller