카테고리 없음

C# - 프로퍼티

zelkova 2021. 1. 9. 17:54

<목차로 돌아가기>

 

 

get, set

객체 지향 프로그래밍에서 정보은닉을 위해 클래스 내부에서만 사용할 수 있도록 private로 접근을 제한하여 버립니다. 그럼 외부에서 이 속성을 변경할수가 없죠? 그런데 프로그램을 만들다 보면, 내부 변수를 수정해야 할 상황이 벌어질 수도 있습니다. 그때 쓰이는 것이 set, get 접근자 입니다. get 접근자만 존재한다면 읽을 수만 있으며, set 접근자만 존재하면 쓸 수만 있으며, 두 접근자가 모두 존재하면 읽을 수도 있고, 쓸 수도 있게됩니다.

 

  1.  using System;
  2.  using System.Collections.Generic;
  3.  using System.Linq;
  4.  using System.Text;
  5.  using System.Threading.Tasks;
  6.  
  7.  namespace ConsoleApplication2
  8.  {
  9.     public class MyClass
  10.     {
  11.         private string name = "John";
  12.  
  13.         public string Name
  14.         {
  15.             get
  16.             {
  17.                 return name;
  18.             }
  19.             set
  20.             {
  21.                 name = value;
  22.             }
  23.         }
  24.     }
  25.     class Program
  26.     {
  27.         static void Main(string[] args)
  28.         {
  29.             MyClass mc = new MyClass();
  30.  
  31.             Console.WriteLine("mc.Name : ", mc.Name);
  32.  
  33.             mc.Name = "Bree";
  34.  
  35.             Console.WriteLine("mc.Name : ", mc.Name);
  36.         }
  37.     }
  38.  }

 

 

 

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;

   }
}

 

반응형