Unity3d C# toolba 사용해보기

C# 프로퍼티(Property) 를 알아보자!

이번에 알아볼 것은 C#의 Properity입니다.

이것이 무엇인가 전혀 감이 안잡혔는데요.. 새로 추가가 된 기능이었군요;;  

public,private 같은 접근한정자의 한계점을 나름대로 보완한 C#만의 새로운 기능이라고 합니다.
은닉성과 편의성의 두마리 토끼를 잡았다는…

클래스를 만들고 메소드를 만들고.. 해당메소드안에 데이터에 접근하여 값을 가져오거나 값자체를 변경하거나.. 프로그래밍을 하면서 수십수백번도 더 있는 일입니다. 그렇게 하면서 원하는 데이터를 만들고 결과를 도출해 가는게 프로그래밍아니기겠습니까? 하지만.. 그동안 사용해왔었던 손에 익었던 델파이와 비교해보니 좀 햇갈리고 불편한 것 같습니다. 물론 델파이에도 public private이라는 개념이 있긴합니다만 워낙 그런거 잘 안따지고 개발을 하다보니  .. 그렇다는 이야기는 재사용을 잘 안하는 프로그램을 했다는 이야기겠죠 ㅜㅜ  그런 큰 불편함을 모르고 개발을 해 왔던 것 같습니다.

Properity라는것은 기존의 public과 private으로 선언하여 했던것의 번거로움을 덜어주는 기능이라고 말하고있습니다.

기존의 소스를 예를든다면..

이런 식으로해서.. 데이터를 집어넣고 집어넣은 데이터를 출력하였는데..  이것을 Properity를 이용해서 좀 더 간결하고 편리하게 할 수 있다는 것입니다.


c# property


선언을 하는 예를 보겠습니다.

Test라는 클래스를 선언 하였고..   메소드와 흡사합니다.



c# property2


형식은 아래와 같은데.. C#버전이 올라가면서 간결해졌습니다. 주석으로 처리했던것은 옛날에 가능했던 문법이고요.. 물론 사용가능합니다.


c# property3


단지.. 값을 넣고 불러오는 용도로만 사용한다면..  get;set;과같이 표현을 해도 무방하기때문에 간결해 진것 같습니다. 하지만 안에 내용을 좀 변경하거나 수정한다고 하면.. 좀 달라지겠죠?

책속의 예제를 한번 살펴본다면..


c# property4



Age라는 클래스에서 특이한점은.. get에 해당하는 프로퍼티만 있고 set에는 내용이 없습니다. 그렇다는 것은.. 
읽기만 가능한속성을 표현하고자 할때 유용하게 사용이 될 것같습니다.  또한 그냥 입력값을 받아오는거이 아니라 날짜의 형식을 변환해서 받아올때는 이런식으로 하면 된다라는걸 보여주는것 같군요..

그래서 해당하는 구문을 돌려서 확인을 하면.. 아래처럼 원하는 결과값이 잘 나오는것 같습니다.

무언가 한결 간결해진 느낌이 드네요..

C# Property_example


좀 더 간결하게 할 수 있습니다.

이 부분인데요…

           BirthdayInfo birth = new BirthdayInfo();
           birth.Name = "테스트";
           birth.Birthday = new DateTime(2012,11, 5);

이것을 바꿔본다면..

           BirthdayInfo birth = new BirthdayInfo()
           {
              Name = "테스트",
              Birthday = new DateTime(2012,11, 5)
           };

중괄호로 묶어서 객체명을 생략할 수 있습니다.   단 여기서 주의할점은..  세미콜론; → 콤마, 로 구분지어 야 한다는 것입니다. 이것만 주의한다면 좀 쉽게 코딩할 수 있겠습니다.

이상으로 C#의 Property에 대해 알아봤습니다. 감사합니다.








댓글