this는 객체가 자신을 지칭할 때 사용하는 키워드
[C#]클래스와 생성자
클래스 이 세상에서 객체라고 할만한 모든 것이 갖고 있는 두가지 : 속성과 기능 C#의 객체 : 속성 -> 데이터, 기능 ->메소드 필드 : 클래스 안에 선언된 변수들 멤버: 필드와 메소드를 비롯하여 프
zizh.tistory.com
위 포스팅에서
객체 외부에선 인스턴스를 만들고 kitty라는 주소로 Cat객체를 가리켜 사용하면 되지만
객체 내부에선 kitty이름을 알 수 가 없다. 내부에선 자기자신을 어떻게 부를까?
= this사용
이라고 했었다
this는 객체가 자신을 지칭할 때 사용하는 키워드이다
객체외부에선 객체의 필드나 메소드에 접근할 때 객체의 이름(변수 또는 식별자)를 사용한다면,
객체 내부에선 자신의 필드나 메소드에 접근할 때 this키워드를 사용한다
this키워드
using System;
using static System.Console;
namespace thistiscsharp
{
class Employee
{
public string Name; //이게 this.Name
public string Position; //this.Position
public void SetName(string Name) //string Name이 그냥 Name
{
this.Name = Name;//this.Name을 매개변수로 받은 Name으로 바꿔라
}
public string GetName()
{
return Name;
}
public void SetPosition(string Position)
{
this.Position = Position;
}
public string GetPosition()
{
return Position;
}
//< 6장에서 배운 out키워드 응용해서 출력해보기 >-------------------------------------------
public void Test(string Name, string Position, out string _Name, out string _Position)
{
_Name = Name;
_Position = Position;
}
//--------------------------------------------------------------------------------
}
class MainClass
{
public static void Main(string[] args)
{
//Employee jihun = new Employee();
//jihun.SetName("jihun");
//jihun.SetPosition("game");
//WriteLine($"이름 : {jihun.GetName()}, 파트: {jihun.GetPosition()}");
//--------------------------------------------------------------------------------
//근데 이전 예제처럼 Employee의 필드를 바로 바꿔줘도 된다. 이번예제는
//Name에 해당되는 인자를 매개변수로 넘기는 Set, 그 값을 리턴하는 Get메소드를 일일이 구현해서 사용했다
//사실 이렇게 하는게 맞다. 필드를 바로바꿔줄려면 public으로 선언해야하는데 그럼 안좋은코드
//이 get set을 편하게 해주는게 프로퍼티. 9장에서 배운다
//Employee jihun = new Employee();
//jihun.Name = "jihun";
//jihun.Position = "game";
//Console.WriteLine($"이름: {jihun.Name}, 파트: {jihun.Position}");
//Console.WriteLine($"이름 : {jihun.GetName()}, 파트: {jihun.GetPosition()}");
//결과는 같음
//--------------------------------------------------------------------------------
//< 6장에서 배운 out키워드 응용해서 출력해보기 - 출력전용 매개변수 >-------------------------------------------
//Employee jihun = new Employee();
//jihun.Test("kim ji hun", "Game !", out string jihunName, out string jihunPosition);
//Console.WriteLine($"이름: {jihunName}, 파트: {jihunPosition}");
//--------------------------------------------------------------------------------
Employee hyeonju = new Employee(); //2번째 인스턴스
hyeonju.SetName("hyeonju");
hyeonju.SetPosition("Backend");
WriteLine($"이름 : {hyeonju.GetName()}, 파트: {hyeonju.GetPosition()}");
}
}
}