readonly 필드를 다루지만
9장까지 공부한 내용으론
readonly키워드는
1. 필드
: 한번 값을 지정하면 그 후로는 값을 변경할 수 없는 필드
2. 구조체
: readonly struct로 변경불가능 구조체 선언, => 모든 필드,프로퍼티에 일일이 readonly수식
3. 메소드
한정자 형식을 readonly로. 구조체에서만 선언가능. 이때 구조체는 readonly로 수식안해도 사용가능.
메소드에게 상태(속성-필드,프로퍼티)을 바꾸지 않도록 강제
의 3가지에 사용가능하다 (공부한것 까지론 일단 3가지)
readonly 필드
- 한번 값을 지정하면 그 후로는 값을 변경할 수 없는 필드
- 읽기 전용 필드는 생성자 안에서만 최초 1회 초기화 가능하다 (반면 const는 코드를 작성한 순간
아예 변경이 불가능하다 이게 readonly와 const의 차이)
using System;
using static System.Console;
namespace thistiscsharp
{
class Configuration
{
public readonly int min;
public readonly int max;
public Configuration(int v1, int v2) //읽기전용필드는 생성자 안에서만 초기화 가느
{
min = v1;
max = v2;
}
public void ChangeMax(int newMax)
{
max = newMax; //max에 에러메세지: 읽기 전용 필드에는 값을 할당할 수 없습니다. 단, 필드가 정의된 클래스의
//생성자 또는 변수 이니셜라이저는 예외입니다.
}
}
class MainClass
{
public static void Main(string[] args)
{
Configuration c = new Configuration(100, 0); //읽기 전용 필드는 생성자 안에서만 초기화 가능
}
}
}