이번 포스팅에서는 상수를 표현하는 const와 이와 유사한 readonly에 대해서 정리했습니다.
const
const로 선언된 변수는 추후에라도 값을 변경할 수 없습니다. 만약 바꾸려고 한다면 컴파일 에러가 발생합니다. 나중에 값을 변경하지 못하기 때문에 선언과 동시에 원하는 값으로 할당을 해야 합니다. 따라서 컴파일 타임에 값이 결정됩니다.
const double kilometerTomile = 0.621371;
이렇게 선언된 kilometerTomile 변수는 나중에 값을 변경할 수 없습니다. 외부에서의 접근은 "클래스명.변수명"으로 접근해야 합니다.
readonly
C#에는 const와 유사한 readonly라는 키워드가 있습니다. const와 다른 점은 객체 생성 시 값이 초기화가 된다는 점입니다. 따라서 런타임 시에 값이 결정되며 외부에서의 접근은 "객체.변수명"으로 접근합니다. 다음은 const와 readonly를 비교한 예제입니다.
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConstAndReadonly
{
class ConstExam
{
public const double kilometerTomile = 0.621371;// const 변수 선언 및 초기화
}
class ReadonlyExam
{
public readonly double kilometerTomile = 0.0;
public ReadonlyExam()
{
kilometerTomile = 0.621371;
}
public ReadonlyExam(double dValue)
{
kilometerTomile = dValue;
}
}
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine(ConstExam.kilometerTomile); //클래스명을 통해 접근한다.
ReadonlyExam instance1 = new ReadonlyExam(); //객체 생성 시 초기화 됨
Console.WriteLine(instance1.kilometerTomile); //객체를 통해 접근
ReadonlyExam instance2 = new ReadonlyExam(0.621371); //객체 생성 시 0.621371값으로 초기화
Console.WriteLine(instance2.kilometerTomile); //객체를 통해 접근
}
}
}
결과
0.621371
0.621371
0.621371
[참고]
"초보자를 위한 C# 200제(2판)" / 저자 : 강병익
'Program Language > C#' 카테고리의 다른 글
Part1. C# 첫발 내딛기(28. Null 조건 연산자 '?') (4) | 2023.01.24 |
---|---|
Part1. C# 첫발 내딛기(27. 값 형식과 참조 형식) (12) | 2023.01.22 |
Part1. C# 첫발 내딛기(25. String과 StringBuilder의 차이) (4) | 2023.01.20 |
Part1. C# 첫발 내딛기(24. String.Format()) (14) | 2023.01.18 |
Part1. C# 첫발 내딛기(23. 문자열 검색) (5) | 2023.01.18 |
댓글