본문 바로가기
프로그래밍/C#

C#의 프로퍼티(Property)란?

by argentdarae 2025. 3. 10.
반응형

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
    }
}