반응형
1. 은닉성
클래스 내부 필드의 정보 노출을 방지하기 위해 접근 한정자를 protected, private로 선언한다.
외부에서 이 필드에 접근하기 위해서 Set, Get함수를 정의한다.
public class testScore
{
public string name = "piggy";
private int score = 100;
// set
public void setScore(int x)
{
score = x;
}
// get
public int getScore()
{
return score;
}
}
testScore testscore = new testScore();
testscore.setScore(120);
int score = testscore.getScore();
Console.WriteLine(score);
2. 프로퍼티
프로젝트의 범위가 방대해지면 이러한 함수를 일일히 입력하면서 사용하기가 어려워질 것이다. 프로퍼티를 사용하게 되면 함수 두가지를 안만들어도 되고 안에서 하나로 관리할 수 있게 된다.
get - 값을 꺼낼때 사용(public 멤버 함수의 리턴을 통해서 private 멤버의 값 내보내)
set - 값을 넣을때 사용(public 멤버 함수의 매개변수를 통해서 private 멤버의 값을 할당 )
public class testScore
{
public string name = "piggy";
private int score = 120;
public int score_property
{
get { return score; }
set { score = value; } // value는 속성에 할당된 값
}
}
testScore testscore = new testScore();
testscore.score_property = 120;
int score = testscore.score_property;
Console.WriteLine(score);
01 set,get 둘 중 하나만 사용하고 싶은 경우
protected int age = 7;
public int Age
{
get { return age; }
}
02 내부에서만 set을 하고 싶은 경우
접근 한정자 set을 접근 한정자 private로 설정하면 외부에서는 사용할 수 없다.
public int Weight
{
// 값을 꺼내올때 사용
get { return weight; }
// 값을 넣을때 사용
private set { weight = value; }
}
같은 class내에서는 액세스 가능하다.
public void PinkPig()
{
Weight = 100;
}
3. 자동 구현 프로퍼티
필드 선언을 하지 않고 한줄의 코드로 만들 수 있다는 큰 장점을 가지고 있다.
public int Weight{ set; get;}
이 한 줄의 코드는 아래 세줄의 코드와 같다.
private int _weight;
public int GetWeight() { return _weight; }
public void SetWeight(int _weight) { this._weight = _weight; }
이러한 초기화 문법도 가지고 있다.
public int Weight{ set; get;} = 100
본 게시글은 MMORPG Part1을 수강하고 정리한 글입니다.
반응형
'유니티 공부 > C# 문법' 카테고리의 다른 글
C# 문법 - Event (0) | 2023.04.18 |
---|---|
C# 문법 - Delegate(대리자) (0) | 2023.04.16 |
C# 문법 - virtual vs abstract vs interface (0) | 2023.04.16 |
C# 문법 - interface (0) | 2023.04.14 |
C# 문법 - abstract (0) | 2023.04.14 |
댓글