상세 컨텐츠

본문 제목

[C#] 프로퍼티

C#

by 메타샤워 2023. 7. 25. 12:56

본문

1. C++의 set(), get()

 
C++로 클래스를 만들면 보통 데이터의 은닉성을 위해 변수를 Private나 Protected로 선언하고 , Set()과 get)함수로 변수를 읽고 쓴다.
 
문제는 클래스의 변수가 많아질수록 set(), get() 함수로 도배되어져가지고 가독성도 떨어지고 변수를 더 추가 할때마다 매번 Set(), Get() 함수를 작성해주어야 하는 불편함이 있다.
 
은닉성은 지킬수 있지만, 상당히 번거롭고 귀찮은 작업이다.
  class MyClass    
    {        
        public int Number;        
        private int num        
        {            
            set { num = value; }            
            get { return num; }        
        }    
    }  
    static void Main(string[] args)        
    {        
        MyClass myclass = new MyClass();            
        myclass.Number = 10;            
        Console.WriteLine(myclass.Number);        
    }
2. C#의 set(), get()
 
C#에서는 위의 문제를 단순화 하는 프로퍼티라는 변수를 제공한다
 
C++의 클래스를 C#의 프로퍼티로 작성하면 다음과 같다.
 
(value라는 변수는 미리 예약된 변수로 멤버변수에 대입하는 값이 자동으로 들어간다.)
c++에서 사용하던 set(),get()함수를 뭐 나름 단순화시키긴 했지만 뭐 그닥 크게 차이가 있어보이진 않는다.
 
그래서인지 C#3.0 부터는 이를 더 단순화 하는 자동구현 프로퍼티를 제공한다.
 
3. 자동구현 프로퍼티
변수에 set; get; 만 넣어주면 알아서 get(), set() 함수를 자동으로 구현해준다. 
 
그래서 자동구현 프로퍼티!!
 
게다가 set을 빼고 get만 넣어주면 쉽게 멤버변수를 읽기전용으로 사용할수 도 있는데
굳이 명시를 해주자면 자동구현 프로퍼티 구현에 원하는 함수에 private 키워드를 적어주면 된다.
 
 
 
4. 프로퍼티 변수 초기화
 
이뿐 아니라 객체 생성시에 손쉽게 프로퍼티 변수를 초기화 할수 있다는 편리함도 제공한다.
 
클래스내에 프로퍼티 변수가 선언되어 있다면 
 
생성자를 작성하지 않아도 객체 생성시에 초기화가 가능하며, 
 
또한 원하는 프로퍼티만 골라서 초기화 해줄수 있다.

관련글 더보기