this ํค์๋
namespace ThisEx
{
class Student
{
private string name;
private string grade;
public void SetName(String name)
{
this.name = name;
//name = name ํํ๋ก ์ฌ์ฉํ๋ฉด ๋งค๊ฐ๋ณ์ name์ธ์ง ํด๋์ค๋ด name์ธ์ง ํ๋ณํ ์ ์๋ค.
// this.name ์ student ํด๋์ค ๋ด ์ ์ธ๋ name
}
public string GetName()
{
return name;
// ์ด ๊ฒฝ์ฐ student ๋ด์ name์์ ์๋ช
ํ๋ค.
}
public void SetGrade(string grade)
{
this.grade = grade;
}
public string GetGrade()
{
return grade;
}
}
class Program
{
static void Main(string[] args)
{
//this : ๊ฐ์ฒด๊ฐ ์์ ์ ์ง์นญํ ๋ ์ฌ์ฉํ๋ ํค์๋์ด๋ค.
Student kim = new Student();
kim.SetName("๊น๊ธธ๋");
kim.SetGrade("Senior");
Console.WriteLine(kim.GetName());
Console.WriteLine(kim.GetGrade());
Console.WriteLine($"{kim.GetName()} {kim.GetGrade()}");
}
}
}
this
: ๊ฐ์ฒด๊ฐ ์๊ธฐ ์์ ์ ์ง์นญํ ๋ ์ฌ์ฉํ๋ ํค์๋
set
ํจ์์ ๊ฐ์ด ๋งค๊ฐ๋ณ์๋ก ํ๋์ ์ด๋ฆ๊ณผ ๊ฐ์ ๋ณ์๋ก ๊ฐ์ ๋ฐ๊ฒ ๋๋ฉด ๊ฐ์ฒด๋ด์์ ์ด๋ค ๋งค๊ฐ๋ณ์์ธ์ง ๊ตฌ๋ถํด์ฃผ๊ธฐ ์ํด this
๋ฅผ ์ฌ์ฉ
setName()
์์ name = name
ํํ๋ก ์ฌ์ฉํ๋ฉด ๋งค๊ฐ๋ณ์ name
์ธ์ง ํด๋์ค ๋ด name
์ธ์ง ํ๋ณํ ์ ์๋ค.
this.name
์ ์ฌ์ฉํ์ฌ student
ํด๋์ค ๋ด ์ ์ธ๋ name
์์ ๋ช
ํํ๊ฒ ํด์ฃผ์ด์ผ ๋ฌธ์ ๊ฐ ์๋ค.
#### this() ์์ฑ์
namespace ThisEx2
{
class Demo
{
public int a, b, c;
public Demo()
{
this.a = 100;
}
public Demo(int b) : this() // ์์ ์ ์์ชฝ์ ์๋ ์์ฑ์๋ฅผ ์ง์นญํ๋ this() ์์ฑ์
{ // ์ด ๊ฒฝ์ฐ ์์ชฝ์ Demo()๋ฅผ ๊ฐ๋ฆฌํด
//this.a = 100;
this.b = b;
}
public Demo(int b, int c) : this(b) // ์ด ๊ฒฝ์ฐ ์์ชฝ์ Demo(int b) ๋ฅผ ๊ฐ๋ฆฌํด
{ // ์ธ์๋ก ๋ค์ด์จ ๋งค๊ฐ๋ณ์ ์ค ํ๋๋ฅผ ๋ฃ์ด์ค.
// ๋งจ ์์ Demo()๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์ถ๋ค๋ฉด this()๋ฅผ ์จ์ค์ผํจ.
//this.a = 100;
//this.b = b;
this.c = c;
}
}
class Program
{
static void Main(string[] args)
{
// this() ์์ฑ์
Demo demo = new Demo(200, 300);
Console.WriteLine(demo.a);
Console.WriteLine(demo.b);
Console.WriteLine(demo.c);
}
}
}
Output
100
200
300
- this() ์์ฑ์๋ ์์ ๋ณด๋ค ์์ชฝ์ ์๋ ์์ฑ์๋ฅผ ์ง์นญํ ๋ ์ฌ์ฉํจ
- ๋ง์ผ Overloading๋ ์์ฑ์๊ฐ ๋ง์ ๊ฒฝ์ฐ this() ์์ฑ์ ๋ด์ ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํด ์ค์ผ๋ก์จ ์์๋ฐ๋ ์์ฑ์๋ฅผ ๊ตฌ๋ถํ ์ ์์ (๋จ, ์ด ๊ฒฝ์ฐ ๋งค๊ฐ๋ณ์ ์ด๋ฆ์ ์์ชฝ ์์ฑ์์ ๋งค๊ฐ๋ณ์ ์ด๋ฆ์ ๋ฐ๋ผ์ผํจ.)