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

[C#] 속성 (get set 메서드)

by 아임코딩 2023. 5. 12.
728x90
반응형

안녕하세요 아임코딩입니다.

 

이번에는 C#에서 제공하는 속성에 대해서 알아보겠습니다.

속성은 전용 필드의 값을 읽거나 쓰거나 계산하는 유연한 메커니즘을 제공하는 멤버입니다.

 

C#에서 클래스를 만들 때 필드는 private 으로 외부에서 접근할 수 없게 설정하고

필드에 대한 get set 메서드를 구현해서 필드에 대한 접근을 제어합니다.

C#에서는 get set 메서드를 쉽게 구현할 수 있도록 속성을 제공합니다.

 

속성은 메서드의 한 종류입니다.

 

예시


        class Point
        {
            private int x;
            private int y;
            public int X
            {
                get { return x; }
                set { x = value; }
            }
            public int Y
            {
                get => y;
                set => y = value;
            }

            public string Name
            {
                get;set;
            }
        }

 

Point 클래스 안에는 int x, int y 필드가 존재합니다.

int x 에 대한 속성으로 public int X 를 만들고 그 안에 get set 키워드를 이용해서 get set 메서드를 구현하면 됩니다.

get { return x; }

set { x = value; }

이 두 줄으로 get set 메서드를 구현한 것과 같은 효과를 가져올 수 있습니다.

 

int y 에 대해서는 

get => y;

set => y = value;

람다식을 이용한 속성 구현입ㄴ디ㅏ.

 

public string Name

{

    get; set;

}

은 자동으로 구현된 속성입니다.

 

전체 코드

using System;
namespace Tistory
{
    internal class Program
    {
        class Point
        {
            private int x;
            private int y;
            public int X
            {
                get { return x; }
                set { x = value; }
            }
            public int Y
            {
                get => y;
                set => y = value;
            }

            public string Name
            {
                get;set;
            }

        }
        static void Main(string[] args)
        {
            Point point = new Point();

            point.X = 10;
            point.Y = 10;

            Console.WriteLine("x : " + point.X + ", y : " + point.Y);

            point.Name = "좌표";
            Console.WriteLine(point.Name);

        }
    }
}

 

Main 함수에서 속성값으로 접근하는 것을 확인할 수 있습니다.

728x90
반응형

'프로그래밍 > C#' 카테고리의 다른 글

[C#] 연산자 오버로드  (0) 2023.05.12
[C#] 정적 메서드 static method  (0) 2023.05.12
[C#] 정적 필드 static field  (0) 2023.05.12
[C#] 생성자  (0) 2023.05.12
[C# 문제풀이] 백준 2439 번 별찍기  (0) 2023.05.11