c# 닷넷기초 상수 - 예약어 Const (상수는 값이 바뀌지 않는다)
지난 시간에는 변수에 대해 알아보았는데 이번 시간에는 상수에 대해 알아보도록 하자.
이전 변수관련 내용은 아래 링크 참고
https://ttleader.tistory.com/125
C# 닷넷 기초 - 변수와 메모리의 이해1 : 변수 (스택stack, 힙heap 메모리) / 개발자 기술 면접에서
오늘은 변수와 함께 메모리에 대해서 정리를 해보려고 한다. 먼저 프로그래밍에 없어서는 안 될 가장 많이 쓰고 가장 기본적인 것 바로 변수! 다 변수는 말 그대로 변하는 값인 것이다. int age = 19
ttleader.tistory.com
상수란?
변수는 값이 바뀌고 정해지지 않은 값을 얘기했다. 반대로 상수(Constant)는 변하지 않는 값이다. 따라서 상수에 값이 한번 대입되면 이후 다른 값을 대입할 수 없는 것이 상수이고 이 상수 선언은 "Const" 라는 예약어를 사용하여 상수를 지정한다.
const bool isReturn = false;
const int i = 5;
const string strText = "Hi~";
//아래 구문은 컴파일 시 오류가 발생한다. 상수는 처음 대입 후 변경불가이다.
isReturn = true;
위 처럼 상수는 최초 값 대입 후 다시 값을 대입할 수 없다. 그리고 컴파일러는 컴파일할 때 상수의 값이 어떤 값인지 정해져 있어야 한다. 왜냐하면 상수는 무조건 변경할 수 없는 값이 정해져 있어야하기 때문이다. 정해지지 않은 값을 상수에 대입하면 오류가 발생한다.
// Mat.Max메서드를 통해 0과 9중 큰 값이 결정된다.
// 프로그램이 실행되면서 i의 값이 9로 대입된다.
int i = Math.Max(0, 9);
//오류가 발생함
//Math.Max 메서드를 통해 값이 나중에 결정되므로 미리 알 수 없는 값은 상수로 지정할 수 없다.
const int Max_i = Math.Max(0,5);
Max_i에는 미리 결정된 값이 들어가도록 해야하고 결정되지 않은 값은 컴파일러가 알 수 없기때문에 오류가 발생한다.
그렇다고 상수에 딱 정해진 단일값만 지정할 수 있는 것만은 아니다. 식으로도 상수를 지정할 수 있다. 조건은 식도 변하지 않는 정해진 식이어야 한다. 아래 예를 보자.
//이런 식은 변하지 않고 미리 계산가능하므로 상수에 대입할 수 있다.
const int i = 100 / 2 + 3;