Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 final 변수 구현하기: readonly와 sealed 키워드 완벽 가이드

Java에는 final 키워드가 존재하지만, C#에는 이에 해당하는 키워드가 직접적으로 없습니다. 대신 C#에서는 동일한 기능을 구현하기 위해 sealed 또는 readonly 키워드를 사용합니다.

C#의 readonly 키워드란?

readonly 키워드는 변수에 값을 한 번만 할당할 수 있도록 제한합니다. 즉, 읽기 전용(read-only)으로 표시된 필드는 객체가 생성되는 시점(생성자 호출 시)에 단 한 번만 값을 설정할 수 있으며, 이후에는 변경이 불가능합니다.

이는 Java의 final 필드와 매우 유사한 동작 방식으로, 한 번 초기화된 값이 프로그램 실행 중에 실수로 변경되는 것을 방지하여 코드의 안정성을 높여줍니다.

readonly 사용 예제

class Employee {
    readonly int age;

    Employee(int age) {
        this.age = age; // 생성자에서 한 번만 할당 가능
    }

    void ChangeAge() {
        // age = 27; // 컴파일 오류 발생!
    }
}

위 예제에서 age 필드는 readonly로 선언되었습니다. 생성자를 통해 값이 할당된 이후에는 다른 메서드에서 값을 변경하려고 하면 컴파일 오류가 발생합니다. 주석 처리된 age = 27; 부분의 주석을 해제하면 바로 오류를 확인할 수 있습니다.

readonly vs sealed: 언제 무엇을 사용할까?

두 키워드는 용도가 조금 다릅니다.

  • readonly: 클래스의 필드(변수)에 적용하여, 값이 한 번 할당된 후 변경되지 않도록 합니다. Java의 final 변수와 가장 유사합니다.
  • sealed: 클래스에 적용하여 해당 클래스가 상속될 수 없도록 합니다. Java의 final class와 같은 역할입니다.

따라서 Java의 final 키워드를 C#으로 옮길 때는, 변수인 경우 readonly, 클래스인 경우 sealed를 사용하면 됩니다.