[C#] 읽기 전용(Read-Only)과 상수(Constant)

Running boy·2023년 8월 6일
0

컴퓨터 공학

목록 보기
17/36

readonly

읽기 전용 필드(read-only field)를 정의할 때 readonly 키워드를 사용한다.

읽기 전용 필드는 필드의 선언과 동시에 정의하거나 생성자 내에서 정의해야 한다.

class TestClass
{
    readonly int n1 = 1;
    readonly int n2;

    public TestClass()
    {
        n2 = 2;
    }

    public void Test()
    {
        n1 = 3; // 컴파일 에러 발생
    }
}

외부에서의 접근은 프로퍼티를 사용하여 제한할 수 있다.
하지만 아무리 private으로 접근을 제한하더라도 내부에서의 접근은 막을 수 없기 때문에 이러한 경우 readonly가 필요하다.


가변 객체/불변 객체(Mutable Object/Immutable Object)

상태가 변할 수 있는 객체가변 객체라고 하고, 상태가 변하지 않는 객체불변 객체라고 한다.

객체를 가변 객체로 만들지 불변 객체로 만들지의 판단은 개발자의 몫이지만 데이터를 담는 목적의 객체는 주로 불변 객체로 만든다.

불변 객체에 담기는 데이터는 객체가 생성됨과 동시에 초기화되고 이후 값이 변하면 안된다.
(값이 변할 수 있다면 데이터의 신뢰성이 떨어지게 된다.)

즉 객체 내부에서도 데이터의 값을 변경할 수 없어야 한다.


const

변하는 값에 식별자를 붙여 변수라고 하듯 고정된 값에 식별자를 붙여 상수(Constant)라고 한다.

특정 리터럴이 중복되어 사용되는 경우 이를 상수로 정의하고 재사용하여 코드의 가독성을 높이고 유지보수를 하기 쉽게 할 수 있다.

const의 특징
1. static으로 선언할 수 없다. (의미상 이미 static이다.)
2. 기본 자료형에만 지정할 수 있다.
3. 반드시 선언과 동시에 정의해야 한다.
4. 컴파일 단계에서 소스코드에 해당 상수가 직접 치환된다.


숫자형 상수를 묶어서 enum 타입으로 정의할 수 있다.

const int ID1 = 100;
const int ID2 = 200;

enum IdEnum
{
    ID1,    // 100
    ID2     // 200
}

참고 자료
시작하세요! C# 10 프로그래밍 - 정성태

profile
Runner's high를 목표로

0개의 댓글