C# 에서의 this 문법

2023. 5. 16. 03:31C# 프로그래밍 개념

this는 static과도 연결되는 개념이다.

 

static은 전에 말했듯이 객체의 영향을 받지 않는 정적 함수, 변수를 말한다. 

그러면 정적 멤버변수, 멤버함수를 불러오는 경우에 어떤 곳에서 불러왔는 지 어떻게 아느냐는 것이다. 만약에 sunshine이라는 이름으로 된 애가 불러오면 sunshine의 HP라는 건 어떻게 알 수 있냐는 것이다.

현재 sunshine을 _this에서 갖고 있고, sunshine이 호출했으니까 _this에는 sunshine이 들어가게 된다. 그리고, HP는 sunshine의 것이라는 걸 알 수 있다. 참고로 this는 예약어(C#에서 이미 쓰고 있는 단어)라서 _this로 대신 했다.

 

아무튼, this가 있거나 없거나 결과가 똑같다. 내가 나 자신이라는 걸 알리기 위해서 문법적으로 this를 넣어주는 셈이 된다.

사실 this를 넣지 않아도 들어가 있는 것과 같다. 어차피 넣어야 하는 거라서 프로그램 상에서 자체적으로 그냥 넣어준다.

 

멤버함수에서 멤버변수를 쓰면 눈에 보이지는 않지만, 인자값으로 있는 this.(본인)이 생략된 것이라고 한다. this까지도 생략해서 쓸 수 있다. 그래서 this.HP => HP가 된다. 

 

나를 불러오기 위해서 다시 나를 넣어야 되면 불편하기 때문에 생략할 수 있게 프로그램의 편의성을 발휘했다. 멤버 함수의 호출에는 무조건 있는 게 this다.

 

멤버 함수에는 this가 생략되어 있다. 이게 객체 지향의 핵심 중의 하나라고 한다. 자기 자신 임을 알리는 것.

 

Public void Doubl(/*number this*/, int _Heal)

{ this.Num *= 2; } 뭐 이런 식으로 쓸 수 있다.

 

한편, 처음에 나온 static은 자기 자신의 객체가 없어도 쓸 수 있는 것이라고 했었는데, 이걸 다르게 말하면 자기 자신이 없는 함수, 변수다. 그래서 객체의 영향을 받지 않고 모두가 공유하는 규칙과도 같은 개념이 된다.

 

static 함수에서는 그래서 this가 없음. 객체가 없어서 this를 쓸 수가 없으니까 안되는 것. 객체를 만들지 않고서도 사용이 가능한 것이다.

'C# 프로그래밍 개념' 카테고리의 다른 글

C# 템플릿(제네릭) 함수  (0) 2023.05.19
C# struct와 enum  (0) 2023.05.17
C# 프로퍼티  (0) 2023.05.15
C# 동기와 비동기 짧게  (0) 2023.05.15
C# 상속(Inheritance)  (0) 2023.05.14