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을 입력한다.
계속 공부해야겠네요...
'프로그래밍&IT > C#' 카테고리의 다른 글
C# 에서 정규표현식 - Regex.IsMatch 이용 (0) | 2015.03.29 |
---|---|
C# - XML 작성 기본 (0) | 2015.02.22 |
코드 리팩토링(refactoring) 관련 & 메소드 추출하기 (0) | 2014.11.16 |
C# 접근 제한자 / 접근자 관련 (private, public, protected ...) (0) | 2014.11.15 |
using : namespace 선언 외 다른 활용 (0) | 2014.06.17 |