본문 바로가기
개발/C#

Property - 프로퍼티

by EPdev 2020. 7. 9.
728x90

기존에 Java로 공부를 하다가 C#을 봤는데 매우 흥미로운 기능이 있어서 소개해볼까 한다.

 

제목에 쓴 property라는 것이다. 프로퍼티란 C#에서 쓰는 메소드인데 쉽게 말하자면, getter와 setter를 가진 변수? 라고 할 수 있겠다. 이것도 어렵다. 그러니까 프로퍼티는 멤버변수(속성) + getter/setter 이다.

 

흥미를 느낀 이유는 프로퍼티를 사용하면 코드가 매우 간결해진다.

아래 예제를 보여주겠다.

 

먼저, Person이라는 클래스를 자바로 표현해봤다. 물론, 에디터에서 getter/setter를 간소화해서 보여주는 기능도 있고 자동 생성해주는 기능도 있으나, 뭔가 길다.

public class JavaPerson
    {
        private int personId;
        private string firstName;
        private string lastName;
        private bool isApproved;

        public int getPersonId()
        {
            return personId;
        }
        public string getFirstName()
        {
            return firstName;
        }
        public string getLastName()
        {
            return lastName;
        }
        public bool getIsApproved()
        {
            return isApproved;
        }
        public void setPersonId(int personId)
        {
            this.personId = personId;
        }
        public void setFirstName(string firstName)
        {
            this.firstName = firstName;
        }
        public void setLastName(string lastName)
        {
            this.lastName = lastName;
        }
        public void setIsApproved(bool isApproved)
        {
            this.isApproved = isApproved;
        }
    }

사실 자바만 쓸 때는 불편한 걸 몰랐다. 하지만 C# 프로퍼티 자동구현을 보고 나니까 자바가 이상하게 보였다. 아래 C#의 프로퍼티로 작성한 Person 클래스를 보자.

public class CSPerson
    {
        public int PersonId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public bool IsApproved { get; set; }
    }

이게 끝이다. 엄청난 축소이지 않은가? 가독성도 뛰어나다. 저 하나하나의 메소드를 변수처럼 사용할 수도 있다. 사실 getter/setter를 사용하는 건데, 모양이 마치 변수를 쓰는 것 같다. 아래와 같이 쓰면 된다.

CSPerson person = new CSPerson();

person.PersonId = "testId";    //setter
string myId = person.PersonId;    //getter

아주 특이한 점은 멤버변수를 선언하지도 않았는데, 자동으로 변수가 있다고 생각해주는 것이다.

 

사실, 위의 C#코드도 컴파일러가 자바코드처럼 다 풀어서 쓴다. 그니까 우리가 보기에만 저렇게 보이고 실제 작동될 때는 큰 차이가 없다는 것이다. 하지만 간단하게 표현되니 가독성에 훨씬 좋은 것 같다.


번외

C#을 공부하며 Visual Studio를 적응해가는 중인데, 프로퍼티와 관련해서 쉽게 코딩하는 방법을 공유한다.

사실 프로퍼티가 간단하긴 한데, 저것도 일일이 다 써주기엔 귀찮다.

그렇다면, VS에서 ① prop을 입력하고 탭을 두번 치면, 자동으로 프로퍼티 기본양식이 생성된다.

그리고 ② 자료형과 변수명을 편집해주면 된다.

이때, ③ 또 탭을 누르면 자료형↔변수명 왔다갔다 할 수 있다.

④ 다 작성했을 때 엔터를 치면 다음 줄로 이동!

728x90

'개발 > C#' 카테고리의 다른 글

List - 리스트  (0) 2020.07.14
값형식과 참조형식  (0) 2020.07.13
Stack and Heap  (0) 2020.07.13
? / ?? - C#의 물음표  (0) 2020.07.13
Delegate - 델리게이트  (0) 2020.07.11

댓글