C# 프로퍼티(Property) Get/Set 함수

C#의 프로퍼티를 사용하여 get/set 메소드를 자동으로 생성하는 방법을 소개합니다.

1. 프로퍼티

프로퍼티는 어떤 멤버 변수에 대해서 get, set 함수를 자동으로 생성하는 문법이라고 보시면 좋습니다.

예를 들어, 아래 예제의 Student 클래스를 봐보세요. Student 클래스는 name이라는 private 변수를 갖고 있습니다. 그리고 우리는 일반적으로 외부에서 private 변수에 직접 접근하지 않고 getName(), setName()과 같은 함수를 통해서 접근을 합니다.

문제는 이런 멤버 변수가 많아지면 get, set 함수도 증가하고 이런 형식적인 메소드를 생성하는 것이 개발자 입장에서 피곤해질 수 있습니다. 프로퍼티는 이런 get/set 함수를 좀 더 만들기 쉽게 해주는 문법적인 요소입니다.

namespace Example {
    public class Program {

        class Student {
            private string name;

            public void setName(string n) {
                name = n;
            }

            public string getName() {
                return name;
            }
        }

        public static void Main(string[] args) {

            Student student = new Student();
            student.setName("Alex");
            Console.WriteLine(student.getName());
        }
    }
}

2. 프로퍼티로 get/set 함수 구현

아래 예제는 프로퍼티로 get/set 함수를 만들고 프로퍼티를 통해서 멤버 변수 name에 접근하는 예제입니다.

Name이 프로퍼티이며, 아래와 같이 프로퍼티를 통해서 private 변수 name에 값을 설정하거나 읽을 수 있습니다.

  • object.PropertyName = value로 변수 name의 값 설정
  • object.PropertyName으로 변수 name의 값 읽음
namespace Example {
    public class Program {

        class Student {
            private string name; // field

            public string Name { // property
                get { return name; }
                set { name = value; }
            }
        }

        public static void Main(string[] args) {

            Student student = new Student();
            student.Name = "Alex";
            Console.WriteLine(student.Name);
        }
    }
}

Output:

Alex

2.1 get/set 함수에 구현 추가

위의 예제는 get/set 함수에서 변수에 값을 설정하거나 값을 리턴하기만 하였습니다.

아래 예제와 같이 get/set 메소드에 코드를 추가하여 값을 변경하는 등의 예외 처리를 할 수도 있습니다.

namespace Example {
    public class Program {

        class Student {
            private string name; // field

            public string Name { // property
                get {
                    return "Name is " + name;
                }
                set {
                    name = value;
                }
            }
        }

        public static void Main(string[] args) {

            Student student = new Student();
            student.Name = "Alex";
            Console.WriteLine(student.Name);
        }
    }
}

Output:

Name is Alex

2.3 가장 단순한 프로퍼티 구현 방법

만약 get/set 함수를 통해 멤버 변수의 값을 변경하지 않는다면, 프로퍼티만 사용해도 됩니다. 또한, 아래와 같은 문법으로 get, set 함수를 쉽게 설정할 수 있습니다.

대부분의 멤버 변수는 단순히 값을 설정하거나 리턴하는 get/set 함수를 갖고 있기 때문에, 이 방법을 가장 많이 사용할 것 같습니다.

namespace Example {
    public class Program {

        class Student {
            public string Name { get; set; }
        }

        public static void Main(string[] args) {

            Student student = new Student();
            student.Name = "Alex";
            Console.WriteLine(student.Name);
        }
    }
}

Output:

Alex
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha