삽질의 현장/- .NET

#021_닷넷(.NET)_.Net Framework 기본 - C# Property

shovelman 2015. 10. 24. 11:05


안녕하세요 삽잡이입니다.


이번 시간에는 C#에서 제공해주는 Property에 대해서 알아보도록 하겠습니다.


C#에서는 Property라는 '속성' 기능을 제공해줍니다.

이 속성은 Getter, Setter의 축약적 메서드입니다.


Property는 이렇게 만들 수 있습니다.


 

int X, int Y...

즉, 이 property를 구조체, 클래스의 속성이라고 부릅니다.

이 속성을 가지고 무엇을 할 수 있느냐...


이 놈은 메서드도, 필드도 아닙니다.

컴파일러가 내부적으로 GetX(), SetY() 와 같은 메서드를 만들어주지요...

GetX()는 x 필드값을 반환, 

SetX() 메서드는 클라이언트로 부터 받아온 값을 필드 x에 저장을 시켜줍니다.

이 속성으로부터 만들어진 Getter, Setter의 타입은 필드의 타입과 같습니다.


IL DASM이라는 Visual Studio에서 제공하는 Tool이 있습니다.

해당 도구는 디스어셈블링을 해주는 프로그램입니다.

즉, .exe 파일을 열고 내용물을 볼 수 있게 해줍니다.


이 도구를 통해서 Getter와 Setter가 만들어지는 것을 확인할 수 있습니다.



이 처럼 내부적으로 Getter와 Setter에 대한 메서드를

컴파일러가 만들어주는 것을 확인할 수 있습니다.


속성을 가져다 쓰면 컴파일러가 메서드로 자동 생성을 해주는 것을 확인했습니다.

우리는 이를 속성이라는 기능을 통해 쉽게 가져다 쓸 뿐입니다.


속성을 사용하면 굉장히 편합니다.

예를 들어 속성 하나만을 사용해서 쉽게 필드 값을 변경할 수도 있습니다.

음... 필드 값을 Get() 메서드를 통해 얻어와서

증감을 시키고 다시 Set() 메서드를 통해 Set을 할 수 있지요...



또 '자동 속성'이라는 속성이 있습니다.

이는 필드를 일반적으로 쓰지 않는 속성을 말합니다.




내부적으로 속성의 Get, Set 하려는 필드를 만들어주는 것입니다.


자동 속성은 컴파일러가 자동으로 필드를 만들어주기때문에

생성자의 경우에도 즉, 내 클래스 안에서도 모르기 때문에 속성을 사용할 수 있습니다.


아무튼... 컴파일러가 자동으로 만들어준 필드를 사용하는 속성을

우리는 '자동 속성'이라고 부릅니다.


또한... 속성이 여러개 필요하다면...

자동 속성 초기화라는 것이 있는데... 이것은 패스하겠습니다...


그러면 이번시간은 여기까지 알아보도록 하겠습니다.


이상 삽잡이였습니다!