반응형
C#에서 프로퍼티란 객체의 필드 값을 읽거나 설정할 수 있는 메서드처럼 동작하는 멤버이며 변수처럼 사용할 수 있다
프로퍼티가 생긴 이유
과거 C, C++에서는 필드에 직접 접근하는 것이 일반적이었으나, OOP에서는 캡슐화를 중요시한다. 즉, 필드는 직접 노출하면 안되며, 필요한 경우 메서드를 통해 접근해야 한다
하지만 그러면 매번 메서드를 선언하는 번거로움이 생기기 때문에 이 문제를 해결하기 위해 프로퍼티를 도입했다. 즉, 필드처럼 간단하게 접근할 수 있으면서도 캡슐화를 달성할 수 있게 된 것이다
코드 예시는 아래와 같다
/* C */
#include <stdio.h>
typedef struct {
int age;
} Person;
// Getter
int getAge(Person* p)
{
return p->age;
}
// Setter
void setAge(Person* p, int value)
{
if (value < 0) {
printf("나이는 0보다 커야 합니다.\n");
return;
}
p->age = value;
}
int main()
{
Person p;
setAge(&p, 25);
printf("나이: %d\n", getAge(&p)); // 나이: 25
return 0;
}
// C#
using System;
class Person
{
private int age;
public int Age
{
get { return age; }
set
{
if (value < 0)
throw new ArgumentException("나이는 0보다 커야 합니다.");
age = value;
}
}
}
class Program
{
static void Main()
{
Person p = new Person();
p.Age = 25; // set 호출
Console.WriteLine($"나이: {p.Age}"); // get 호출 -> 나이: 25
}
}
'프로그래밍 > C#' 카테고리의 다른 글
C# 얕은 복사와 깊은 복사의 차이 (0) | 2025.03.04 |
---|---|
C# 값 타입과 참조 타입의 차이 (0) | 2025.03.04 |
C# 인터페이스와 추상클래스의 차이 (0) | 2025.03.03 |
C# ContainsKey vs TryGetValue (0) | 2024.09.17 |