전체 코드
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;
}
}
}
출처
[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 |