반응형
변수를 초기화하는 시점
- const는 코드에 명시된 변수값을 compile 시점에 확정합니다.
- readonly는 프로그램이 메모리에 올라가는 runtime 시점에 값을 확정합니다.
const는 컴파일 타임 상수이며, readonly는 런타임 상수입니다. 상수는 프로그램이 종료될 때까지 변경하거나 수정할 수 없습니다. 그렇다면 차이점은 무엇인지 알아봅시다.
const
- 컴파일 타임 상수입니다.
- 상수는 기본적으로 정적(Static)입니다.
- 내장자료형 (정수형, 실수형, Enum, String)에 대해서만 사용 할 수 있습니다.
- 변수 선언과 동시에 값을 초기화해야 합니다.
- 클래스 내부의 상수라고 해도 인스턴스화 없이도 값에 접근할 수 있습니다(static과 비슷합니다).
- 메모리 할당 위치는 기본적으로는 Stack Memory이지만 static 선언을 하면 Heap Memory에 저장됩니다.
readonly
- 런타임 상수이다. exe 또는 dll을 사용할 때 변수의 값을 가져옵니다.
- 모든 자료형에 사용 할 수 있으며, 생성과 동시에 초기화 할 필요는 없습니다.
- 생성자에서 초기화할 수 있습니다. 생성자 오버로딩으로 인해 객체마다 값이 다를 수 있다는 이야기입니다.
- 읽기 전용 변수는 비정적non-static 변수와 비슷하게 동작합니다. 클래스를 인스턴스화해야만 값에 접근할 수 있습니다.
- 힙 메모리에 할당됩니다.
반응형
'C#' 카테고리의 다른 글
[C#] 박싱(Boxing)과 언박싱(Unboxing) (0) | 2022.09.10 |
---|---|
[C#] 깊은 복사(Deep Copy)와 얕은 복사(Shallow Copy)의 이해 (0) | 2022.09.10 |
[C#] ref, in, out, params (1) | 2022.09.10 |
[C#] Abstract(추상) vs Virtual(가상) vs Interface(인터페이스) 차이 (0) | 2022.08.30 |
[C#] 메소드 재정의 (0) | 2022.08.30 |
댓글