본문 바로가기

개인공부/C#

[C#] 프로퍼티(Property)

 

■ 프로퍼티(Property) :

은닉성을 신경 쓰면 번거롭기 때문에 public을 남용하게 될 수 있음, public 필드는 외부의 접근을 허용하기 때문에 오염에 노출될 가능성이 있음, 프로퍼티(Property)는 public 필드처럼 내부 필드에 접근하게 해주는 멤버

 - get / set 메서드를 통해 내부 필드에 접근

 - 데이터를 출력할 때는 get 접근자

 - 데이터를 입력할 때는 set 접근자

 

  * get 접근자만 사용하면 읽기 전용 프로퍼티

  * value키워드에는 프로퍼티에 선언된 데이터 형식(Data Type)과 동일한 매개변수가 입력

 

■ 자동 구현 프로퍼티 :

get / set 메서드 보다 간략한 구조

 - 필드 이름 생략

 - get접근자의 반환 문(return 필드;) 생략

 - set접근자의 필드 수정(필드 = value;) 생략

 

 

■ 무명 형식 :

 - public 프로퍼티로만 이루어진 이름 없는 클래스

 - 형식의 선언과 동시에 인스턴스 할당

 - 일회성 데이터 형식(Data Type)으로 사용

 

■ Example

using System;

namespace PropertyExample
{
    class A_class
    {
        private string name;
        private int num;

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

        public int Num
        {
            get { return num; }
            set { num = value; }
        }
    }

    class B_Class
    {
        public string Name { get; set; }
        public int Num { get; } = 100;  // 읽기 전용, 선언과 동시에 초기화
    }


    class Program
    {
        static void Main(string[] args)
        {
            A_class a = new A_class() { Name = "memoo", Num = 200 };
            Console.WriteLine($"[A_Class] : a.Name = {a.Name}, a.Num = {a.Num}");

            B_Class b = new B_Class() { Name = "MEMOO" };
            Console.WriteLine($"[B_Class] : b.Name = {b.Name}, b.Num = {b.Num}");

            var tmp = new { Name = "Beboo", Num = 300 };    // 무명 형식
            Console.WriteLine($"[anonymity] : tmp.Name = {tmp.Name}, tmp.Num = {tmp.Num}");
        }
    }
}

 

Example 결과

 

 

 

 

 

'개인공부 > C#' 카테고리의 다른 글

[C#] 컬렉션(Collection)  (0) 2022.09.23
[C#] 배열(Array)  (0) 2022.09.22
[C#] 인터페이스(Interface), 추상클래스(Abstract class)  (0) 2022.09.19
[C#] 구조체(Struct), 튜플(Tuple)  (0) 2022.09.14
[C#] IS, AS  (0) 2022.09.10