C#/닷넷에서 자주 사용되는 get, set 키워드에 대해서 알아보자.

아주 편리한 키워드 이다.


우선 아래 코드를 보자


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class People
{
    public String name;
    public int age;
}
 
class Program
{
    static void Main(string[] args)
    {
        People kim = new People();
        kim.name = "kim";
        kim.age = 10;
    }
}
cs


name과 age 변수에 대해서 public으로 설정하여 어디서든 접근이 가능하다.

하지만 이렇게 하면 정보은닉 원칙에 어긋나기 때문에 private 바꾸는 것이 좋다.


그러면 아래와 같이 get과 set 함수들을 만들어 사용할 수 있다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class People
{
    private String name;
    private int age;
    public String getName() {
        if (name == null)
            return "Error";
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
 
class Program
{
    static void Main(string[] args)
    {
        People kim = new People();
        kim.setName("test");
        kim.setAge(10);
        Console.WriteLine(kim.getName() + " " + kim.getAge());    
    }
}
cs


위와 같은 방식이 이전 java나 C++에서 사용하던 방식들이다.



하지만 C#에서는 좀더 편리한 get, set 키워드를 제공한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class People
{
    private String name;
    private int age;
    public String Name
    {
        get {
            if (name == null)
                return "Error";
            return name;
        }
        set {
            name = value;
        }
    }
    public int Age
    {
        get {
            return age;
        }
        set {
            age = value;
        }
    }
}
 
class Program
{
    static void Main(string[] args)
    {
        People kim = new People();
        kim.Name = "test";
        kim.Age = 10;
        Console.WriteLine(kim.Name + " " + kim.Age);
    }
}
cs



위의 코드와 같이 private으로 변수를 선언하고 get,set용 프로퍼티를 만들수도 있지만

아래의 코드와 같이 변수 선언을 생략할 수도 있다. (C# 3.0 이후부터 지원)

코드가 좀더 간결해진다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class People
{
    public String Name
    {
        get {
            if (Name == null)
                return "Error";
            return Name;
        }
        set {
            Name = value;
        }
    }
    public int Age
    {
        get;set;
    }
}
 
class Program
{
    static void Main(string[] args)
    {
        People kim = new People();
        kim.Name = "test";
        kim.Age = 10;
        Console.WriteLine(kim.Name + " " + kim.Age);
    }
}
cs



Posted by 꿈만은공돌
,