본문 바로가기

IT

[C#] 속성에 대한 간단한 테스트


안녕하세요, 요즘 도통 개발을 하지 않는 개발자 윤진입니다.


C#의 속성과 관련된 부분을 보다가 간단히 코드로 확인하고 싶은 바가 있어 남깁니다.



namespace ConsoleApplication2
{
    class Program
    {
        class Man
        {
            private int age;
            public string Name { get; set; }
            public int Age
            {
                get { return age; }
                set
                {
                    if (value > 10) age = 10;
                }
            }
        }

        static void Main(string[] args)
        {
            Man man = new Man();

            man.Name = "Jin";
            man.Age = 2;

            Console.WriteLine(man.Name + " : " + man.Age);
        }
    }
}


- 속성과 짝이 되는 변수를 반드시 적어줄 필요는 없습니다.

  다시 말하면, public string Name { get; set; }의 경우,

  컴파일러가 컴파일 시점에 private 변수를 만들어 위의 속성을 관리한다는 것이죠.

public class Man {
   public string Name { get; set; }
   public int age { get; set; }
}

위의 코드는 아래의 코드와 기능적으로 동일합니다.

public class Man {
private string name; private int age; public string Name { get { return name; } set { name = value; } } public int Age { get { return age; } set { age = value; } } }


- 빈 getter / setter 지정

  속성을 { get; set; }으로 지정하면,

  별도의 루틴없이 get / set이 되므로, 외부에서 봤을때는 속성이 변수처럼 동작합니다.


- 동시에 정의해야 하는 getter / setter

  get {} 을 정의했다면, set {}도 정의해야합니다.

  만약 get만 정의하고 set을 정의하지 않으면, 컴파일 에러가 뜹니다.

  정의를 하려면 양쪽 모두에 사이좋게 정의해주세요.


- 키워드 value

  set 루틴에서, 사용자가 입력한 값을 value라는 키워드라 지칭합니다.

  if (value > 10)과 같은 루틴으로 value를 건네받아 사용할 수 있습니다.


이상으로 간단한 속성의 성질을 알아보았습니다.

_끝