C#에서 읽기 전용 속성 구현

Bilal Shahid 2024년2월15일
  1. C#에서 초기화할 때 변수에 읽기 전용 속성 선언
  2. C#에서 간단한 get 속성을 사용하여 읽기 전용 속성 구현
C#에서 읽기 전용 속성 구현

오늘 우리는 C#에서 읽기 전용 속성을 만드는 방법을 배울 것입니다. 그래서 읽기만 가능하고 수정할 수는 없습니다.

C#에서 초기화할 때 변수에 읽기 전용 속성 선언

우리는 마지막 두 기사에 대해 CAR 클래스에 대해 작업했습니다. 동일한 클래스를 사용하여 읽기 전용 속성을 구현해 보겠습니다. CAR 클래스에 보안을 위해 읽기 전용으로 유지하려는 maker_id라는 속성이 있다고 가정해 보겠습니다.

class CAR {
  private readonly int maker_id;

  public CAR(int maker_id) {
    this.maker_id = maker_id;
  }

  public int get_maker_id() {
    return maker_id;
  }
}
static void Main(String[] args) {
  CAR x = new CAR(5);
  Console.WriteLine(x.get_maker_id());
}

그래서 우리는 maker_idreadonly로 선언했습니다. 위를 실행하면 출력은 다음과 같습니다.

5

이제 maker_id 필드에 다른 setter를 추가하려고 한다고 가정해 보겠습니다. 그러면 다음과 같이 할 수 있습니다.

public void set_maker_id(int maker_id) {
  this.maker_id = maker_id;
}

그러나 이제 오류가 발생하는 것을 알 수 있습니다.

변수에 대한 C# 읽기 전용 속성 - 오류

따라서 readonly 속성을 사용하면 생성자의 변수에 값을 한 번만 할당할 수 있음을 알 수 있습니다. 그렇지 않으면 접근성으로 인해 오류가 발생하고 수정을 거부하는 경향이 있습니다.

전체 코드는 다음과 같습니다.

class CAR {
  private readonly int maker_id;

  public CAR(int maker_id) {
    this.maker_id = maker_id;
  }

  public void set_maker_id(int maker_id) {
    this.maker_id = maker_id;  // line ERROR
  }

  public int get_maker_id() {
    return maker_id;
  }
}
static void Main(String[] args) {
  CAR x = new CAR(5);
  Console.WriteLine(x.get_maker_id());
}

오류는 코드의 주석에 언급되었습니다.

C#에서 간단한 get 속성을 사용하여 읽기 전용 속성 구현

maker_id 속성은 다음과 같이 작성할 수 있습니다.

private int maker_id { get; }

그리고 다음과 같이 함수를 작성하려고 하면:

public void set_val(int val) {
  this.maker_id = val;
}

다음과 같이 오류가 생성됩니다.

GET을 사용하는 C# 읽기 전용 속성 - 오류

따라서 get 속성을 설정하면 어떻게 읽기 전용이 되는지 알 수 있습니다. 전체 코드는 다음과 같습니다.

class CAR {
  private int maker_id { get; }

  public CAR(int maker_id) {
    this.maker_id = maker_id;
  }

  public void set_val(int val) {
    this.maker_id = val;
  }
}
static void Main(String[] args) {
  CAR x = new CAR(5);
}

이것은 규칙을 따를 뿐만 아니라 직렬 변환기를 깨뜨리는 경향이 있습니다. 또한 변경되지 않고 변경되지 않는 경향이 있습니다.

get이 무언가를 반환하는지 확인하려면 다음과 같이 코드를 만드세요.

class CAR {
  public int maker_id {
    get { return maker_id; }
  }
}

이것이 C#에서 읽기 전용을 구현하는 방법입니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

관련 문장 - Csharp Property