none
vb.net Get Set 함수 관련 질문입니다. RRS feed

  • 질문

  • 보통 오픈소스나 중급 개발자 이상의 소스를 참고하면

    Property 변수명 Get, Set 등으로 값을 설정하고 Return을 합니다.

    그럴바엔 그냥 전역변수를 선언하고 다른 클래스에서 변수, 함수를 참조하거나, 설정하면되는게 낫지 않나요?

    정보은닉을 한다면 private로 아예 막아버리면 되는 것이고, 정보은닉을 하지 않겠다면 Public으로 사용하면 되지 않나요?

    그냥 변수, 함수 형태로 직접 참조하는게 편한것 같은데  Get Set을 사용함으로서 얻어지는 효율이 잘 이해가지 않습니다.

    P.S 금일 MSDN 사이트에 가입했습니다. vb.net을 공부중인데 궁금증에 대하여

    이 포럼에 질문을 계속 작성해도 되나요?(회원 가입시 질문은 2, 3회만 가능하다던지.. 하는 패널티가 적용하는지 궁금합니다.)

    2013년 9월 27일 금요일 오전 5:56

답변

  • (설명은 C# 기준으로 하니 ^^ 양해 바랍니다.)

    질문을 정리해 보면,

    class Test
    {
       public int Name;
    }

    이라고 하면 될 것을 불편하게 property를 사용해

    class Test
    {
       int name;
       public int Name { get { return name; } set { name = value; } }
    }

    이런 식으로 정의하는 것이 별로 의미가 없다는 말씀이지요?

    말씀하신대로, 상황에 따라서는 의미가 없긴 합니다. ^^

    그런데, 나중에 디버깅을 하다 보면 다른 경우가 있습니다. 해당 변수를 언제 set 하는지 알고 싶은 경우 set property에 정지점을 걸어두면 모두 추적이 되지만 필드로 사용하는 경우에는 그렇게 할 수가 없습니다.

    그 외에 get과 set에 다른 접근자를 사용하는 경우에도 유용합니다. 예를 들어, 특정 데이터는 외부에서는 get만 가능하고 내부에서는 get/set 모두 허용하고 싶을 때 다음과 같이 만들 수 있습니다.

    class Test
    {
       int name;
       public int Name
      {
         get { return name; } 
         protected set { name = value; }
      }
    }

    • 답변으로 표시됨 Student_WHKIM 2013년 9월 30일 월요일 오전 2:53
    2013년 9월 30일 월요일 오전 1:09