ReadOnly
C# 에서 readonly 는 주로 필드 ( field ) 앞에 붙여서 사용하는 키워드이다.
readonly 의 역할은 , 한 번 값을 정하면 이후에는 바꿀 수 없도록 제한하는 역할이다.
▼문법
class ClassName
{
public readonly 데이터형 필드이름;
public readonly 데이터형 필드이름 = 초기값;
public ClassName(매개변수)
{
필드이름 = 값; // 생성자 안에서 초기화 가능
}
}
- readonly 는 필드 ( 클래스나 구조체의 멤버 변수 ) 에만 사용할 수 있다.
- 값을 할당할 수 있는 시점은 딱 두 군데이다.
- 선언과 동시에 초기화할 때
- 생성자 ( Constructor ) 안에서 초기화할 때
그 외에는 값을 변경할 수 없다.
▼예시 코드
class Player
{
public readonly string Name; // readonly 필드
public readonly int Level = 1; // 선언과 동시에 초기화
public Player(string name)
{
Name = name; // 생성자에서 초기화 가능
// Level = 10; // 이미 초기화된 readonly는 여기서 바꿀 수 없음
}
}
class Program
{
static void Main()
{
Player p = new Player("호찬");
Console.WriteLine(p.Name); // "호찬"
Console.WriteLine(p.Level); // 1
}
}
const 와 readonly 의 차이
둘 다 "값 변경 불가" 라는 공통점이 있다
| 키워드 | 특징 |
| const | 컴파일 시점에 값이 확정. 반드시 선언 시 초기화 필요 |
| readonly | 런타임 시점 ( 실행할 때 )생성자에서 값 할당. 객체마다 다른 값 가능 |
const 는 모든 인스턴스가 공유하는 불변 상수
readonly 는 객체마다 다를 수 있지만 한 번 정하면 바꾸지 못하는 값이다.
정리
readonly는 객체가 만들어질 때까지만 값을 정할 수 있고 , 그 이후에는 절대 바꿀수 없다.
'⭐C Sharp > 11. 객체 지향' 카테고리의 다른 글
| sealed class (0) | 2025.10.09 |
|---|---|
| virtual 과 override (0) | 2025.10.08 |
| 상속 ( OOP ) (0) | 2025.09.28 |
| 추상 클래스 ( Abstract Class ) (0) | 2025.09.28 |
| 인터페이스 ( Interface ) (0) | 2025.09.28 |