반응형
1. const (컴파일 타임 상수)
- 컴파일 타임에 변수가 값으로 대체. 메서드 내부에서도 선언 가능
public void Coin() {
const int ibitcoin = 40207;
}
- 컴파일 타임에 변수가 값으로 대체 되기 때문에 내장된 숫자형, enum, 문자열, null과 같은 내장 자료형만 사용 가능.
//CS0283 'DateTime' 형식은 const로 선언할 수 없습니다.
private const DateTime bitcoin = new DateTime(2021, 0, 0, 0, 0, 0);
- 할당 이후 변경 불가
//CS0131 할당식의 왼쪽은 변수, 속성 또는 인덱서여야 합니다.
const int ibitcoin = 40207;
public Form1()
{
ibitcoin = 80000 ;
}
- 선언시 값 할당 필요 (초기화 필요)
const int ibitcoin = 40207;
2. readonly (런타임 상수)
- 컴파일 타임에 값으로 대체되는 것이 아닌, 상수에 대한 참조로 컴파일되어 메서드 내에서는 선언 불가능.
//CS0106 이 항목의 'readonly' 한정자가 유효하지 않습니다.
//CS0131 할당식의 왼쪽은 변수, 속성 또는 인덱서여야 합니다.
public void Coin() {
readonly int ibitcoin = 40207;
}
- 꼭 생성과 동시에 초기화하지 않아도 되며, 생성자에서 최초 1번 초기화 가능. 그 이후에는 수정 불가능.
readonly int ibitcoin = 40207;
public Form1()
{
ibitcoin = 80000 ;
}
- 어떤 타입과도 사용될 수 있다.
3. 런타임 상수와 컴파일 상수 비교
const 장점 성능이 빠르다는 것인데, 이를 통해 얻을 수 있는 성능 개선 효과가 크지 않아 아래 상황을 제외한다면 readonly를 사용하는 것이 좋습니다.
const를 사용해야 할때
- 성능이 매우 중요하고 상수의 값이 절대로 바뀌지 않는 경우에 제한적으로 사용.
- 재컴파일 전까지 기존 값을 유지하고 싶은 경우
- 선택적 매개 변수에 대한 기본값
- 특성의 매개 변수
- switch/case문의 레이블
- enum 정의에 사용되는 상수
반응형
'C#' 카테고리의 다른 글
C# 문자열(string) 자르기 (Substring, Split, IndexOf) (0) | 2021.06.16 |
---|---|
C# sleep과 지연함수 (delay) (0) | 2021.06.16 |
C# string to datetime (문자를 날짜형식으로 변경) (0) | 2021.06.15 |
ASCII Table 아스키 코드표 (0) | 2021.06.10 |
2019년 4월 프로그래밍 언어 순위 및 비교 (0) | 2019.04.19 |