get, set |
객체 지향 프로그래밍에서 정보은닉을 위해 클래스 내부에서만 사용할 수 있도록 private로 접근을 제한하여 버립니다. 그럼 외부에서 이 속성을 변경할수가 없죠? 그런데 프로그램을 만들다 보면, 내부 변수를 수정해야 할 상황이 벌어질 수도 있습니다. 그때 쓰이는 것이 set, get 접근자 입니다. get 접근자만 존재한다면 읽을 수만 있으며, set 접근자만 존재하면 쓸 수만 있으며, 두 접근자가 모두 존재하면 읽을 수도 있고, 쓸 수도 있게됩니다.
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApplication2
- {
- public class MyClass
- {
- private string name = "John";
- public string Name
- {
- get
- {
- return name;
- }
- set
- {
- name = value;
- }
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- MyClass mc = new MyClass();
- Console.WriteLine("mc.Name : ", mc.Name);
- mc.Name = "Bree";
- Console.WriteLine("mc.Name : ", mc.Name);
- }
- }
- }
Get Set 함수는 굉장히 유용한 함수입니다.
아래와 같이 hp를 외부에서 접근해서 수정할 때 허용하지 않은 값을 수정하려고 체크하거나 디버그를 시작할때 따로 함수를 만들어야 하는 문제가 발생합니다.
이를위해서 get, set함수를 사용해서 문제를 해결합니다.
pubilc int hp;
int getDamage(){
return hp;
}
void setDamage(int damage){
hp -= damage;
}
이런식으로 굉장히 자주 사용하는데 C#은 프로퍼티를 이용하여 간략화 했습니다.
int m_hp;
public int hp{
get{
return m_hp;
}
set{
m_hp -= damage;
}
}
아 그리고... 프로퍼티에서 get을 없애면 값을 가져올 수 없습니다.
int m_hp;
public int hp{
set{
m_hp -= damage;
}
}
반응형