728x90
반응형
C#에서는 변수를 상수로 만드는 방법이 존재한다. 그 중에서 const와 readonly라는 한정자가 있다.
const는 compile을 한 시점에 값을 확정하기 때문에, const 필드는 필드 선언에서만 초기화 될 수 있다. 반면에, readonly는 필드 선언과 임의 생성자에서 readonly 값을 여러 번 할당할 수 있다. 그래서 readonly 필드는 생성자를 만들 때 그에 따라 다른 값을 줄 수 있다.
1. const 예시
class ConPoint
{
const int x = 5;
int y;
public ConPoint(int x, int y)
{
this.y = y;
}
public override string ToString() //private 변수를 출력하기 위한 출력코드
{
return $"x:{x} - y:{y}";
}
}
2. readonly 예시
class ReadPoint
{
readonly int x = 5;
int y;
public ReadPoint(int x, int y)
{
this.x = x;
this.y = y;
}
public override string ToString()
{
return $"x:{x} - y:{y}";
}
}
3. const와 readonly로 선언된 변수 값 비교
class Readonly_Const_example
{
static void Main()
{
ConPoint p1 = new ConPoint(1, 2);
Console.WriteLine(p1.ToString()); // x:5 - y:2
ReadPoint p2 = new ReadPoint(1, 2);
Console.WriteLine(p2.ToString()); x:1 - y:2
}
}
const를 할당한 변수는 compile시에 값이 이미 할당이 되므로 생성자에 값을 할당해도 변하지 않는다. 반면에, readonly는 필드 선언시에도 값을 할당할 수 있기 때문에 생성자에 값을 할당하면 그 값으로 바뀐다.
728x90
반응형
'스마트한 개발 공부 > C#' 카테고리의 다른 글
[C#] object, var, dynamic 비교 (0) | 2021.10.31 |
---|---|
[C#] Method에서 여러 개의 Return 값 받기 (0) | 2021.09.07 |
[C#] Struct 구조체 (0) | 2021.08.19 |
[C#] 상속과 interface(인터페이스) 그리고 abstract class(추상 클래스) (0) | 2021.08.18 |
[C#] Method의 Parameter 전달방식과 Shallow, Deep Copy (0) | 2021.08.17 |