의미
상수는 값을 변경할 수 없는 메모리 공간이다.
상수와 변수의 차이
변수는 프로그램 중간에 값을 변경할 수 있지만, 상수는 초기에 정한 값을 중간에 변경할 수 없다.
선언 방식
C# 상수는 키워드 const 또는 readonly를 사용하여 정의한다. 변수와 비슷하게 선언하는데, 앞에 const 또는 readonly 키워드를 붙여 상수임을 나타낸다. 초기화 이후에 선언된 상수 값을 변경할 수 없다.
const
- 선언과 동시에 값을 할당하여 초기화해야 한다. 상수만 선언하고 나중에 값을 넣을 수 없다.
- 내장 자료형 (정수형, 실수형, Enum, String)에 대해서만 사용할 수 있다.
- 메모리 할당 영역은 Stack Memory이다. Heap Memory에 저장하는 readonly 보다 더 빠르게 접근할 수 있다.
- 컴파일 시 상수 값이 결정되어 컴파일 타임 상수라 부른다. (컴파일 시 const 변수의 값을 가져온다.)
readonly
- 선언할 때뿐만 아니라 생성자에서 할당하여 초기화할 수 있다. 따라서 사용된 생성자에 따라 필드의 값이 결정된다.
- 모든 자료형에 사용할 수 있다.
- 메모리 할당 영역은 Heap Memory이다.
- 런타임 시 상수 값이 결정되어 런타임 상수라 부른다. (exe 또는 dll을 사용할 때 변수의 값을 가져온다.)
using System;
namespace ConsoleApplication
{
class ConstantVal
{
const int OrderBy = 1;
const string DEFAULT_VALUE = "MAIN";
readonly int Min;
public ConstantVal()
{
Min = 1;
}
}
}
상수를 사용하는 이유
프로그래밍시 변경되지 않아야 할 값을 상수로 선언해 놓으면 프로그래머의 실수와 오류를 최소화할 수 있다.
const 보다 readonly를 사용하는 것이 좋다.
이는 readonly의 유연성 때문이다. const는 컴파일 타임 상수이기 때문에 const 변수가 바뀌는 경우 해당 프로젝트뿐만 아니라 참조받거나 영향을 받고 있는 모든 프로젝트를 재컴파일 해야 한다. 하지만 readonly는 생성 시 초기화하지 않아도 생성자에서 초기화하여 사용할 수 있는 유연성이 있기 때문에 실제 프로젝트를 사용하는 단계에서 변수의 값을 가져올 수 있다.
const 보다 readonly를 사용하면 상수 값 변경시 재컴파일을 안 해도 되기 때문에 확장성이 좋아지고, 생성자에 따라 값을 변경할 수 있기 때문에 유연성도 더 좋아진다. 따라서 const 보다 readonly를 사용하는 것이 좋다.
'C#' 카테고리의 다른 글
[C#] 문자열 String & StringBuilder (0) | 2023.03.31 |
---|---|
[C#] 네이밍 룰 (0) | 2023.03.28 |
[C#] 지역 변수, 전역 변수 (1) | 2023.03.28 |
[C#] 2. C# 참조 타입과 값 타입, 박싱과 언박싱 (0) | 2022.11.18 |
[C#] 1. C# 기초 (0) | 2022.11.17 |