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 |