프로퍼티

C#/기본기

[C#] 레코드와 객체비교

레코드 형식으로 만드는 불변 객체 불변객체는 내부 상태(데이터)를 변경할 수 없는 객체 (앞에서도 많이 했던 readonly) 상태를 변경할 수 없다는 특성 때문에 불변 객체에서는 데이터 복사와 비교가 많이 이루어짐 새로운 상태를 복사한 뒤 이 중 일부를 수정해서 새로운 객체를 만들고 , 상태를 확인하기 위해 객체 내용을 자주 비교한다 레코드는 불변 객체에서 이뤄지는 이 두 가지 연산을 편리하게 수행할 수 있도록 C# 9.0에 도입된 형식 앞에서 불변 객체를 만드는 방법이 참조 형식 : 클래스의 모든 필드를 readonly로 선언 값 형식 : readonly struct로 구조체를 선언 값 형식 객체는 다른 객체에 할당할 때 깊은 복사를 수행 (모든 필드를 새 객체가 가진 필드에 1:1로 복사) 필드가 ..

C#/기본기

[C#] 자동구현 프로퍼티(get; set;)

자동구현 프로퍼티 프로퍼티는 데이터의 오염에 대해선 메소드처럼 안전하고, 데이터를 다룰 때는 필드처럼 간결하다 하지만 그것 또한 중복작업의 느낌이 든다 ★ 프로퍼티는 또한 Set이나 Get접근자에 논리를 추가해 접근단계에서 제어가 가능하다 하지만 아무논리도 섞여있지 않은 단순히 필드를 읽고 쓰기만 한다면? C#은 3.0부터 이런경우에 사용해서 코드를 더 단순하게 만드는 자동 구현 프로퍼티를 지원한다 방법은 그저 get; set;만 쓰면된다 필드를 선언할 필요도 없고 set의 value도 없는 등 많은 것을 생략하게 해줌 자동구현 프로퍼티 using System; using static System.Console; namespace Sample { class BirthdayInfo { public stri..

C#/기본기

[C#] 프로퍼티

public 필드의 유혹과 Get/Set메소드 필드는 public으로 선언하면 안된다 99프로의 필드는 private 필드의 값을 접근 및 변경할때 필드를 public으로 선언해놓고 Get/Set메소드 대신, 외부에서 cat.height = 100; 을 사용하는 것 처럼 " = " 연산자로 필드를 읽거나 할당하고 싶어진다 이렇게 되면 외부에서 클래스 내부의 필드에 쉽게 접근할 수 있기 때문에 객체 지향의 은닉성이 위반되고 자칫 데이터가 오염되기 쉽다 그렇기 때문에 통상적으로 은닉성을 지키고 접근 및 변경을 프로그래머가 원하는 대로 (조건문을 추가하거나 등) 할 수 있게 하기 위해 Get/Set메소드를 일일이 구현해주는 것이고, 한단계 발전하여 이를 간단하게 해주는게 프로퍼티다 Get/Set메소드? Get..

파워지훈
'프로퍼티' 태그의 글 목록