반응형
속성(Property)이란
속성(Property)은 C#에서 클래스, 구조체 또는 인터페이스의 필드와 비슷한 역할을 하지만, 더 안전하고 유연하게 데이터를 캡슐화 할 수 있도록 설계된 멤버이다. 속성을 사용하면 필드에 직접 접근하지 않고도 데이터를 읽거나 수정할 수 있다.
get 접근자와 set 접근자를 사용하여 데이터를 읽거나 쓸 때 추가적인 로직을 정의할 수 있다.
예제로 알아보는 속성 기본 구현
public class Person
{
// 필드
private string name;
// 속성
public string Name
{
get { return name; } // 값을 읽음
set { name = value; } // 값을 설정
}
}
class Program
{
static void Main()
{
Person person = new Person();
person.Name = "Alice"; // set 접근자 호출
Console.WriteLine(person.Name); // get 접근자 호출
}
}
자동 구현 속성(Auto-Implemented Proprerty)
별도의 구현없이 아래와 같이 선언만 해줘도 자동으로 구현해준다.
// 자동 구현 속성
public string Name { get; set; }
// 아래 코드를 자동으로 구현
public string Name
{
get
{
return Name;
}
set
{
Name = value;
}
}
초기값이 있는 자동 구현 속성
속성 선언 시 초기값 지정이 가능하다.
public string Name { get; set; } = "Unknown";
init 접근자 (C# 9.0 이상)
초기값 설정 이후에 해당 값을 변경할 수 없도록 한다.
public class Configuration
{
public string Host { get; init; }
public int Port { get; init; }
}
var config = new Configuration { Host = "localhost", Port = 8080 };
// config.Host = "newhost"; // 컴파일 오류 (init 속성은 변경 불가)
속성의 주요 장점
- 데이터 캡슐화 : 속성은 데이터를 캡슐화하여 직접 필드에 접근하지 못하게 보호한다.
- 유지보수 용이성 : 속성을 이용하면 필드에 바로 접근하는 구조가 아니기 때문에 내부 구현이 변경되더라도 외부 코드를 수정하지 않고도 동작을 유지 할 수 있다.
- 접근 제어 : get, set 접근자를 통해서 데이터의 읽기/쓰기 권한을 세밀하게 제어할 수 있다.
속성(Property) vs 필드(Field)
MSDN의 설명을 참고해보자면 속성은 스마트 필드(Smart Field)의 한 형태라고 한다. 기능이 추가된 필드라고 생각하면 이해하기 편하다.
참고 사이트
'프로그래밍 > C#' 카테고리의 다른 글
C# Count vs Count() 차이에 대해서 (0) | 2024.12.16 |
---|---|
C# 표현식 본체 멤버와 암시적 연산자 함께 사용하기 (0) | 2024.12.06 |
C# 문자열 비교하기 ==연산자 vs Equlas() 메서드 (0) | 2024.11.27 |
C# 비동기 프로그래밍 TAP이란 무엇인가? (0) | 2024.11.22 |
C# 비동기 프로그래밍 APM이란 무엇인가? (0) | 2024.11.21 |
댓글