본문 바로가기

프로그래밍언어/ASP.NET

Get 과 Set 메서드의 차이점


간략하게, 값을 초기화 해주는 메서드.

 shakeJ 

 

Get 메서드는 Set과 짝이 되는 개념으로 프로그래머의 실수로 인해 멤버변수의 값이 잘못 변할 수 있는 가능성을 사전에 막아준다. (바로 접근하게 되면, 원치 않게 내용을 지우거나 수정을 할 수도 있기 때문에) Get을 통해 가져오면 수정을 하면 안되는 멤버 변수들은 복사를 해서 반환을 해 주게 된다.

 

보안의 이유때문에도 쓰기도 한다.

우선 property는 
1.

    1
 private string name;
    2 public string GetName() { return name; }
    3 public void SetName(string n) { name = n; }
2.

    1 private string name;

    2 public string Name

    3 {

    4        get { return name; }

    5        set { name = value; }

    6 }
3.

    1 public string Email { getset; }

요렇게 3가지의 방법을 구현을 할 수 있지요 보통은 1번은 거의 안쓰고 2,3번을 쓰게 되는데

3번같은 경우는 닷넷 프레임워크 3.0부터 지원하고 있습니다. 
컴파일시 약간의 차이를 띄긴 하지만 결국, 값을 넣고(set), 빼는(get) 동일한 기능을 한다는 것이지요.

그런데 값을 get할때나 set할때 가공(처리)를 하고 싶다면 어떻게 하면 될까요!?
예를 들어 값을 가져올때(get) html태그를 제거하고 순수 문자열만 가져오고 싶다면? C#3.0의 자동 구현된 속성에서는 문법적으로 방법이 없는거죠.그냥 자동으로 구현을 해주니 일반적인 속성만 나오게되니 불가능 하게 되는거죠 하지만 기존의 명시적인 속성 구현방법으로는 가능이 한것입니다. set도 마찬가지고요. 그리고 여러개의 프로퍼티가 하나의 private필드를 다룰 수도 있습니다

 

private string _content;

public string Content
{
    
get
    {
        
return Regex.Replace(_content, @"<(.|\n)*?>"string.Empty);
    }
    
set { _content = value; }
}