C#/C#기초

7. 프로퍼티

공부를하자 2023. 5. 14. 15:38

1.프로퍼티

 1)정의

  public으로 선언한 필드는 외부에서의 뜻하지 않는

 데이터 변경을 초래할 있다. 그래서

 선언한 변수의 값을 외부에서 접근이 가능하게 함에 동시에

 캡슐화(은닉성) 지원하는 것이 프로퍼티다.

 2)선언

 get: 외부에 데이터를 출력할

 set:  내부에 데이터를 입력할

 

3)자동구현 프로퍼티

-프로퍼티 구현을 간단하게 사용하도록 .

   *prvaite 원형 변수 초기화x, return value 표기 x

 

4)객체 생성 프로퍼티 초기화

 

 

5)초기화전용(Init-Only) 자동구현 프로퍼티(c#9.0 도입)

 -set 처럼 값을 변경할 있지만 객체를 초기화 때만

  변경이 가능하다.

 

 

 

객체 초기화 값을 변경하려고 하면 컴파일 에러 발생

5)무명형식

 -public 프로퍼티로만 이루어진 이름없는 클래스

 -1회용 데이터 형식으로 사용됨 

-var 키워드와 프로퍼티를 이용해 선언

 

2.래코드 형식으로 만드는 불변객체

  *불변(Immutable) 객체 :  객체 내부 상태를(데이터) 변경 없는 객체 

1)정의

 -  불변(Immutable) 객체는 데이터를 변경할 없다는 특성으로

    데이터 복사와 비교가 자주 일어난다.

    새로운 상태를 표현하려고 기존상태를 복사 변경 상태 확인을 위해 비교가

    이루어진다.

    일련의 과정을 쉽게 수행하도록 도입된 형식.

 -  형식 객체는 깊은 복사를 참조형식은 얉은 복사를 한다.

  *깊은복사 : 객체를 복사할 별도의 메모리에 할당하는 (복사비용이 크다.비교가 편리하다)

  *얖은복사 : 메모리 주소만을 복사하는 (복사비용이 적다.그러나

                                                        깊은복사를 할떄는 프로그래머가 직접해야한다.)

 

  레코드 형식은 참조형식의 복사비용이 적음과 값형식의 편리 두가지 장점을 가지고 있다.

 

 2)선언

 -record 이름

   {

      구현부

   }

 

 3)with

  레코드 형식으로 복사된 객체는 기본적으로 protected이기 때문에 명시적으로 호출할 수없고

 그래서  with라는 키워드를 사용하여 객체의 특정 값을 할당 있다.

 

 4)Equals()

   레코드 형식은 값을  비교하는 Equals문을 자동 구현되어 있어 편리하다.

 

 

'C# > C#기초' 카테고리의 다른 글

9.일반화 프로그래밍  (0) 2023.05.21
8.배열과 컬렉션, 인덱서  (0) 2023.05.16
6.인터페이스와 추상클래스  (0) 2023.05.13
5. 클래스와 객체지향 프로그래밍  (0) 2023.05.11
4. 메소드 간추리기  (0) 2023.05.09