본문 바로가기
프로그래밍/C#

읽기 / 쓰기 프로퍼티(Property) 선언 및 사용 방법

by bantomak 2023. 5. 31.
반응형

읽기 / 쓰기 프로퍼티

프로퍼티(property)는 개체 데이터에 대한 액세스가 보호, 제어, 확인되지 않을 위험 없이 공용 데이터 멤버의 편리함을 제공합니다. 프로퍼티는 접근자(accessors)를 선언합니다. 기본 데이터 멤버에서 값을 할당하고 검색하는 특수 메서드입니다. 

 

set 접근자를 통해 데이터 멤버를 할당할 수 있으며, get 접근자는 데이터 멤버 값을 검색합니다.

 

class Student
{
    private string _name = "N/A";
    private int _age = 0;

    public string Name
    {
        get
        {
            return _name;
        }

        set
        {
            _name = value;
        }
    }

    public int Age
    {
        get
        {
            return _age;
        }

        set
        {
            _age = value;
        }
    }

    public override string ToString()
    {
        return "name : " + Name + "\n" + "age : " + Age;
    }
}

public class Wrapper
{
    private string _name = "N/A";
    public string Name
    {
        get
        {
            return _name;
        }
        private set
        {
            _name = value;
        }
    }

}

class Program
{
    static void Main(string[] args)
    {
        var student = new Student();

        Console.WriteLine(student);

        student.Name = "Jone Doh";
        student.Age = 21;

        Console.WriteLine(student);

        var wrapper = new Wrapper();
        wrapper.Name = "Jone Doh";  // error
    }
}

 

비대칭 접근자 접근성(Restricting Accessor Accessibility)

get과 set이 항상 동일한 엑세스 한정자를 가질 필요는 없습니다. 상황에 맞게 사용이 가능합니다.

public string Name
{
    get
    {
        return _name;
    }
    private set
    {
        _name = value;
    }
}

 

value

사용자가 지정한 값이 value 변수에 담겨서 사용됩니다.

_name = value;

 

ToString() 재정의

ToString()을 재정의했지만 ToString()은 프로그램 내에서 명시적(explicitly)으로 사용되지 않습니다.

Console.WriteLine()에서 객체를 호출하면 기본으로 호출됩니다.

public override string ToString()
{
    return "name : " + Name + "\n" + "age : " + Age;
}

댓글