반응형
개요
객체 지향 프로그래밍에서, 은닉성 때문에 Get함수와 Set함수를 사용한다.
C++에는 없고, C#에는 있는 프로퍼티 기능을 사용하면 이를 간단하게 줄일 수 있다.
설명
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
using System;
namespace CSharp
{
class Program
{
class Monster
{
private int hp = 100;
public int GetHp() { return hp; }
public void SetHp(int value) { hp = value; }
}
static void Main(string[] args)
{
Monster monster = new Monster();
monster.SetHp(50);
}
}
}
|
cs |
Monster 클래스에서 hp를 은닉하기 위해 GetHp, SetHp 함수를 구현했다.
이를 프로퍼티를 사용하면 간단하게 바꿀 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
using System;
namespace CSharp
{
class Program
{
class Monster
{
private int hp = 100;
public int Hp
{
get { return hp; }
set
{
if (value > 100)
{
value = 100;
}
hp = value;
}
}
}
static void Main(string[] args)
{
Monster monster = new Monster();
monster.Hp = 100;
Console.WriteLine(monster.Hp);
monster.Hp = 200;
Console.WriteLine(monster.Hp);
monster.Hp = 50;
Console.WriteLine(monster.Hp);
}
}
}
|
cs |
get으로 hp를 반환하고 set으로 hp를 설정한다.
hp가 100초과로 설정되면 hp를 100으로 맞춰준다.
set 함수로 설정할 때에는, 매개변수를 value로 사용한다.
get; set;을 생략할 수도 있다.
get;을 생략하면 쓰기 전용이 되고
set;을 생략하면 읽기 전용이 된다.
자동 구현 프로퍼티로 더 간단하게 사용할 수도 있다.
hp를 선언한 뒤에 바로 get; set;을 넣어주면 된다.
마지막의 = 100;의 초기화 문법은 C# 7.0 이상부터 지원한다고 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
using System;
namespace CSharp
{
class Program
{
class Monster
{
public int hp
{
get; set;
} = 100;
}
static void Main(string[] args)
{
Monster monster = new Monster();
Console.WriteLine(monster.hp);
monster.hp = 50;
Console.WriteLine(monster.hp);
}
}
}
|
cs |
반응형
'언어 > C#' 카테고리의 다른 글
[C#] Generic (0) | 2022.03.22 |
---|---|
[C#] delegate (0) | 2021.10.18 |
[C#] Static (0) | 2021.10.14 |