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_id를 readonly로 선언했습니다. 위를 실행하면 출력은 다음과 같습니다.
5
이제 maker_id 필드에 다른 setter를 추가하려고 한다고 가정해 보겠습니다. 그러면 다음과 같이 할 수 있습니다.
public void set_maker_id(int maker_id) {
  this.maker_id = maker_id;
}
그러나 이제 오류가 발생하는 것을 알 수 있습니다.

따라서 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 속성을 설정하면 어떻게 읽기 전용이 되는지 알 수 있습니다. 전체 코드는 다음과 같습니다.
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#에서 읽기 전용을 구현하는 방법입니다.
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