본문 바로가기

프로그래밍&IT/C#

this의 3가지 용법 체크

C#, this의 3가지 용법.



this. 말그대로 '이것'을 나타낸다고 보면 될것같네요

1) 자신의 멤버를 가리키는 this

this만 치면 해당 클래스의 멤버변수들 쉽게 보고 타이핑이 가능하기에 개인적으로 많이 썼던 방법입니다.

Ex)




class Exam

{

private int iVar

private string strVar;

public string strVar1;

protected string strVar2;


public Exam() {

this.iVar = 100;

this.strVar="Private1";

this.strVar1="Public";

this.strVar2="Protected";

}

}


2) 클래스를 반환하는 this

동일한 객체 인스턴스를 가리키게 됩니다.

Ex)

namespace Con_Ex05

{

class Program

{

static void Main(string[] args)

{

Exam1 ex1 = new Exam1();

Exam1 ex2 = ex1.getInstance();


Console.WriteLine("Get Data from ex1: {0}", ex1.GetData());

Console.WriteLine("Get Data from ex1: {0}", ex2.GetData());

}

}


class Exam1

{

private int data = 100;

public int GetData() 

{

return this.data;

}

public Exam1 getInstance()

{

return this;

}

}

}

결과)




3) 생성자를 호출하는 this

디자인패턴에 응용하는 부분이 나오던것같던데요.

좀 헷갈리기도 하고...

Ex)

namespace Con_Ex05

{

class Program

{

static void Main(string[] args)

{

Exam1 ex1 = new Exam1();

Exam1 ex2 = new Exam1("0001");

Exam1 ex3 = new Exam1("0002", "Smith");


ex1.PrintUser();

ex2.PrintUser();

ex3.PrintUser();

}

}


public class Exam1

{

private string userid;

private string username;


public Exam1(string userid, string username)

{

this.userid = userid;

this.username = username;

}

public Exam1() : this("Unknown", "Unknow") { }

public Exam1(string userid) : this(userid, "Unknown") { }


public void PrintUser()

{

Console.WriteLine("Userid: {0}, UserName: {1}", this.userid, this.username);

}

}

}


결과)


설명) UserID와 UserName을 입력받되

만약 입력받지 못한 값이 있으면 Unknown을 입력한다.


계속 공부해야겠네요...