C \ # 의 GET 와 SET 접근 기

우 리 는 C \ # 문법 속성 을 배 울 때 먼저 GET, SET 방문 자 와 접촉 해 야 합 니 다. 영어 의 의미 에서 GET 는 무엇 을 얻 는 것 이 고 SET 는 무엇 을 설정 해 야 하 는 지 이해 해 야 합 니 다. 그러면 공식 적 으로 이 방문 자 를 어떻게 정의 하 는 지 살 펴 보 겠 습 니 다.
get 은 속성 을 읽 을 때 하 는 작업 입 니 다. set 는 속성 을 설정 할 때 하 는 작업 입 니 다.하나의 속성 을 정의 합 니 다. get 만 있 으 면 이 속성 은 읽 기 전용 입 니 다.마찬가지 로 set 만 있 고 속성 은 쓰기 만 하 는 것 입 니 다. 물론 쓰기 만 하 는 속성 은 의미 가 크 지 않다 고 생각 합 니 다.
다음은 GET 와 SET 접근 기 를 코드 인 스 턴 스 를 통 해 만 나 보 겠 습 니 다.
 
class Bank {private int money; / 개인 필드 Public int Money / 속성 {/ GET 접근 기, 다른 방법 으로 이해 할 수 있 습 니 다. 부 여 된 값 의 개인 변수 money get {return money;} / / SET 접근 기 를 되 돌려 주 고 우리 가 입력 한 값 을 개인 변수 money set {money = value;}}}}}
 
우 리 는 생동감 있 는 예 를 들 수 있다.
Money 속성 은 은행 의 자동 입 출금 기 와 같 습 니 다. 안에 있 는 Money 가 보이 지 않 지만 set (저금) 로 get 을 사용 할 수 있 습 니 다.(돈 을 찾 습 니 다). money 는 개인 필드 입 니 다. 클래스 에 나 누 어 져 있 습 니 다. 클래스 이외 의 프로그램 은 직접 방문 할 수 없습니다. 클래스 의 set 와 get 구성원 은 외부 프로그램 방문 류 내부 속성 의 유일한 방법 입 니 다. 은행 에 가서 돈 을 찾 는 것 처럼 은행 금고 에서 돈 을 직접 가 져 올 수 없습니다. 은행 영업 사원 이 돈 을 찾 아 드 리 는 것 입 니 다. 그러면 우 리 는 Money 속성 을 설정 하 였 습 니 다. 어떻게 합 니까?사용 하 시 겠 습 니까?
 
class Program {static void Main (string [] args) {/ / Bank Bank bank = new Bank () 를 예화 합 니 다. / / Money 속성 에 대해 할당 작업 을 합 니 다. 이때 우 리 는 SET 방문 기 bank. Money = 15; / Money 속성 에 대해 값 을 추출 합 니 다. 이때 우 리 는 GET 방문 기 int a = bank. Money 를 방문 합 니 다.}}}
 세심 한 친 구 는 우리 가 정지점 을 설정 하여 SET 방문 에서 코드 뱅 크 머 니 = 15 를 실행 하면 우리 속성 중의 SET 방문 기 에 들 어 가 는 것 을 발견 할 수 있 습 니 다.
 
이상 은 우리 의 SET 와 GET 접근 기의 가장 기본 적 인 응용 이다.
그런데 우 리 는 왜 GET 와 SET 접근 기 를 사용 해 야 합 니까? GET 와 SET 를 통 해 공유 변수 Money 를 읽 기와 쓰기 작업 을 합 니 다. 실제 적 으로 Money 의 개인 변수의 값 을 간접 적 으로 변경 하 는 것 입 니 다. 그렇다면 Money 를 Public 로 설정 하지 않 고 인 스 턴 스 를 통 해 Money 를 직접 읽 고 쓰기 작업 을 하 게 하 는 것 입 니까? 우 리 는 쓸데없는 짓 을 하고 있 는 것 이 아 닙 니까?
사실 저 는 처음에 GET 와 SET 를 접 하 자마자 이 해 했 습 니 다. 그들의 의 미 를 이해 하기 어렵 다 는 것 이 아니 라 왜 사용 해 야 합 니까? 왜 Public 의 필드 변 수 를 직접 사용 하지 않 았 습 니까?
이해 1: GET 와 SET 를 사용 하면 할당 과 추출 을 제한 할 수 있 습 니 다.
 
class Bank {private int money; / 개인 필드 Public int Money / 속성 {/ GET 접근 기 는 다른 방법 으로 이해 할 수 있 습 니 다. 부 여 된 값 의 개인 변수 money get {return money;} / / SET 접근 기 를 되 돌려 주 고 우리 가 입력 한 값 을 개인 변수 money 에 부여 하 며 제한 을 가 합 니 다. 마이너스 set {if (value > = 0) {money = value;} else {money = 0;} } } }
이렇게 되면 우 리 는 Money 속성 에 마이너스 돈 을 영원히 줄 수 없습니다!
사실 이런 응용 이 야 말로 우리 의 실제 프로젝트 에서 속성 설정 에서 매우 흔히 볼 수 있다! 예:
 
public string ApplyStaff {/ 지연 불 러 오기 ApplyStaff 대상 get {if (this. IsGhost) {LazyLoaderFactory. GetLoader (). LoadApplicationConfirm (this);} return applyStaff;} set {/ 입력 한 문자 의 길 이 를 판단 하 는 if (value. Length > 40) {throw new Exception ("수령 자 는 40 자 를 초과 할 수 없습니다.");} this. applicationStaff = value;}
 
public string BillName {get {return billName;} set {if (value = = string. Empty) {throw new Exception ("증빙서류 이름 이 비어 있 으 면 안 됩 니 다");} else if (value. Length > 40) {throw new Exception ("증빙서류 이름 길이 가 40 자 를 초과 하면 안 됩 니 다");} else {this. billName = value;}}}}
만약 에 SET 접근 기 에서 이 속성의 일부 특성 을 설정 하면 예 를 들 어 비어 있 으 면 안 되 고 길이 가 크 면 숫자, 각종 정규 표현 식 등 이 어야 합 니 다. 그리고 이상 을 던 지고 표현 층 을 다시 받 아들 이면 많은 검증 프로그램 을 적 게 쓸 수 있 습 니 다.
이해 2: 포장 성, 안전성, 완전 성
저도 잘 모 르 겠 어 요.

좋은 웹페이지 즐겨찾기