프로그래밍/C#

c# 프로퍼티(property) 간단 사용법

Jaebins 2024. 11. 6. 23:29
반응형

자바나 C#과 같은 객체지향 프로그래밍 언어는 많은 장점을 가지고 있다.

그 중 하나가 "캡술화" 이다. 캡술화란 서로 연관있는 속성과 기능들을 하나의 만들어 데이터를 외부로부터 보호하는 것"』 으로 정의한다. 이러한 캡슐화를 이뤄주는 객체지향 언어만의 고유한 기능이 있는데, 그것이 바로 "프로퍼티(property)" 이다. 

프로퍼티는 외부의 클래스로부터 선언한 변수를 외부에 접근을 할 수 있게하고, 동시에 보호까지 할 수 있는 강력한 문법이다. 또한 코드 관리를 용이하게 해주기 때문에 많이 사용된다.

 

✋ 프로퍼티(property)

프로퍼티는 다음과 같이 정의할 수 있다.

public class Item
{
    private string name; // 변수 선언 (private)

    public string Name // 프로퍼티 선언
    {
        get { return name; }
        set { name = value; }
    }
    
    /* 간단하게 축약할 수도 있다.
    public string Name { get; set; }
    */ 
}

get 키워드로 데이터를 가져올 수 있고, set 으로 데이터를 할당 할 수 있다.

 

public class Item
{
    private string name; // 변수 선언 (private)

    public string Name // 프로퍼티 선언
    {
        get { return name; }
        set { name = value; }
    }
}

class Test
{
    public static void Main(string[] args)
    {
        Item item = new Item();
        item.Name = "폭탄";

        Console.WriteLine("======아이템 조회하기=========");
        Console.WriteLine($"Item : {item.Name}");
        Console.WriteLine("=============================");
    }
}

/* ======아이템 조회하기=========
Item : 폭탄
================================= */

실제로 사용하는 방법은 그렇게 복잡하지 않다.

 

또한 다음과 같이 변수 할당에 특정 조건을 추가할 수 있다.

using Practice;

public class Item
{
    private string name;
    private int count;

    public string Name
    {
        get { return name; }
        set
        {
            name = value;
        }
    }

    public int Count {
        get{ return count; } 
        set
        {
            count = value * 2; // 실제 설정한 값에 2배를 곱한 뒤 할당
        }
    }
}

class Test
{
    public static void Main(string[] args)
    {
        Item item = new Item();
        item.Name = "폭탄";
        item.Count = 5;

        Console.WriteLine("======2배 이벤트 진행중======");
        Console.WriteLine($"Item : {item.Name}, Count : {item.Count}");
        Console.WriteLine("=============================");
    }
}

/* ======2배 이벤트 진행중======
Item : 폭탄, Count : 10
================================= */

 

반응형