본문 바로가기

C#/기본 문법

C# Property(프로퍼티)

 

 

 

 

전체 코드


 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rookiss_CSharp
{
    // https://www.inflearn.com/course/%EC%9C%A0%EB%8B%88%ED%8B%B0-mmorpg-%EA%B0%9C%EB%B0%9C-part1?srsltid=AfmBOopkXVxKs-MQPYZkTjEYW-yIDMO5xP7l5hQq0hQasUWhobvyKO6N
    // 56강 프로퍼티

    // 객체지향 -> 은닉성 : 불필요한 정보를 외부로 노출하지 않겠다
    // 외부에서 접근하지 못하도록 할떄 C++, Java에서는 필드자체는 priavte, protected 하고 그 필드를 접근할 있게 함수를 public으로 열어줌
    // C#에서는 좀 더 편리하게 프로퍼티를 사용할 수 있음, 사용하면 public 변수처럼 접근하고 간편하게 사용할 수 있음(편리하기도 하지만 내부적으로는 은닉성도 갖춤)
    class Knight
    {
        // public int hp; // 큰 규모의 프로젝트시 문제가 있음(여기저기서 사용시 어디서 값이 변경된 건지 찾기가 어려움)

        // 그래서 기본적으로 protected나 private으로 하고
        // 정말 필요하다면 함수로 구현함
        protected int hp;

        // Get 함수, 또는 Getter(게터)라고 부름
        // public int GetHp() { return hp; }

        // 함수로 사용시 디버그 모드로 breakpoint 이 함수에 걸어서 어디서 값이 변경되는지 콜스텍으로 확인 가능
        // 확장성도 좋음(특정 조건을 넣거나 하면, 이 함수를 통해서 값이 변경되기에 사용하는 모든 부분에 한번에 적용가능)
        // Set 함수, 또는 Setter(세터)라고 부름
        // public void SetHp(int hp) { this.hp = hp; }

        // C++에서는 위 방법대로 Get 함수, Set 함수를 구현하는게 최선이지만
        // C#에서는 편리하게 사용하기 위해 프로퍼티라는 것을 제공함
        // 프로퍼티
        public int Hp
        {
            get { return hp; }
            set { this.hp = value; } // value : 넣어주는 값

            // 중괄호 안에 코드가 여러줄 일경우 여러줄로 해야 가독성이 좋음
            /*
            get 
            { 
                return hp; 
            }
            set 
            { 
                this.hp = value; 
            }
            */
        }

        // Get 함수만 있어도 사용가능
        /*
        public int Hp
        {
            get { return hp; }
        }
        */

        /*
        public int Hp
        {
            get { return hp; }
            private set { this.hp = value; } // Set 함수만 클래스 내부에서만 사용하고 싶을경우 private, 본인 + 자식 클래스에서만 사용하고 싶을 경우 protected로 해도 됨
            
        }
        */

        // 맴버변수 선언하는 것도 귀찮고, 프로퍼티 작성도 귀찮다 -> 자동 완성 프로퍼티
        // 자동 완성 프로퍼티 : 맴버 변수 선언 + Get 함수 구현 + Set 함수 구현
        // 엄청 편함
        public int Hp
        {
            get; set;
        }

        // 한줄짜리로 아주 가볍게 만들 수 있음
        // public int Hp { get; set; }

        // 자동 완성 프로퍼티 위에 내용이 결국 아래 내용 전부 대체됨(내용 유사하게 대체됨)
        // 컴파일러가 하나의 변수를 만들고, Get 함수와 Set 함수를 하나씩 구현해줌
        // privatre int _hp;
        // public int GetHp() { return _hp; }
        // public void SetHp(int value) {_hp = value;}



        // C# 7.0 부터는 값을 넣어 초기화도 해줄 수 있음
        // public int Hp1 { get; set; } = 100;
    }
    

    class Program
    {
        static void Main(string[] args)
        {
            Knight knight = new Knight();

            // 프로퍼티 사용시, 아래처럼 바로 값 설정할 수도 있고, 가져올 수 있음
            knight.Hp = 100; // value : 100
            int hp = knight.Hp;
        }
    }
}

 

 

 

 

 

 

 


 

 

 

출처


https://www.inflearn.com/course/%EC%9C%A0%EB%8B%88%ED%8B%B0-mmorpg-%EA%B0%9C%EB%B0%9C-part1?srsltid=AfmBOopkXVxKs-MQPYZkTjEYW-yIDMO5xP7l5hQq0hQasUWhobvyKO6N

 

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문| Rookiss - 인프런 강

현재 평점 4.9점 수강생 6,987명인 강의를 만나보세요. 기초 프로그래밍 지식이 없는 사람들을 위한 C# 프로그래밍 기초 강의입니다. 문법 암기 위주의 수업이 아니라, 최대한 필요한 부분만을 요

www.inflearn.com

56강 Property(프로퍼티)

 

'C# > 기본 문법' 카테고리의 다른 글

C# Event(이벤트)  (0) 2025.12.14
C# Delegate(대리자)  (0) 2025.12.14
C# Interface(인터페이스)  (0) 2025.12.14
C# Generic(일반화), Boxing(박싱)과 Unboxing(언박싱)  (0) 2025.12.14
C# Dictionary  (0) 2025.11.20