본문 바로가기

프로그래밍/C# 프로그래밍

Property - Get, Set

C++ 에서 멤버의 은폐를 위해 Get(), Set() 하던짓을


C# 에서는 프로퍼티 제공으로 귀찮음이 덜하게 되었다.



public int itemCode { get; set; }


이렇게 하면 자동으로 구현이 된다.


public int itemCode { get; }


이렇게 하면 읽기 전용




여기부터는 에러사례..


public int itemCode { set; } - 에러!!

이렇게 하면 쓰기 전용이 될 것 같지만, 에러를 내며 VS 님이 친절히 자동구현 속성은 접근자가 필요하다고 설명한다.


그래서

public int itemCode { protected set; } - 에러!!

이렇게 하면 다시 한번 접근자의 엑세스 가능 한정자는 get, set 이 모두 필요하다고 에러를 뿜어 내신다.



잘못된 사례를 더 소개하면,

public int itemCode { public get; protected set; } - 에러!!


public int itemCode { protected get; protected set; } - 에러!!


protected int itemCode { get; protected set; } - 에러!!


엑세스 가능 한정자는 변수 접근범위보다 제한적이어야 한다.



대부분의 경우 수정은 내부에서만.. 그리고 외부에서는 값을 얻어오는 형태를 쓰기 때문에

public int itemCode { get; protected set; }


이런 형식을 가장 많이 사용하지 않을까 생각한다.






public class Date
{
    private int month = 7; 

    public int Month
    {
        get
        {
            return month;
        }
        set
        {
            if ((value > 0) && (value < 13))
            {
                month = value;
            }
        }
    }
}

또한 프로퍼티는 초기화도 지원이 되므로 이런식의 사용도 가능하다.

필드는 private 타입이고 접근자를 public로 선언하여 구현하는 방법도 있다.


맨앞 알파벳의 대소문자 구분은 관례로 하고 있음