C#의 이 키워드

WBOY
WBOY원래의
2024-09-03 15:29:08768검색

C#에서 'this' 키워드는 인스턴스 메서드나 생성자 내에서 현재 클래스의 인스턴스 멤버를 참조하는 데 사용됩니다. 메소드 매개변수와 인스턴스 변수의 이름이 동일한 경우 이름 모호성을 제거합니다. 다음은 C#에서 'this' 키워드의 몇 가지 용도입니다.

  • 현재 개체의 모든 메서드를 호출하는 데 사용할 수 있습니다.
  • 동일 클래스의 생성자에서 다른 생성자를 호출하는 데 사용할 수 있습니다.
  • 같은 클래스의 객체를 매개변수로 취하는 메소드 호출에 매개변수로 사용할 수 있습니다.

설명 구문:

C#에서 'this' 키워드를 사용하는 구문은 다음과 같습니다.

this.instance_variable

위 구문에서 'this'는 키워드이고, instance_variable은 클래스의 인스턴스 변수 이름입니다.

동일한 클래스의 개체를 매개변수로 메서드에 전달하는 경우 구문은 다음과 같습니다.

method_name(this);

위 구문에서 'this' 키워드는 현재 클래스의 객체를 참조하고 method_name은 호출할 메소드의 이름입니다.

이 키워드는 C#에서 어떻게 작동하나요?

C#의 'this' 키워드는 클래스의 'this' 포인터로 사용됩니다. 클래스의 현재 인스턴스를 나타내는 데 사용됩니다. C#에서 'this' 포인터는 클래스의 비정적 멤버에 대해서만 작동합니다. 'this'는 현재 인스턴스에서 작동하고 비정적 멤버는 클래스 인스턴스에서 액세스할 수 있기 때문입니다. 'this' 포인터는 정적 변수 및 멤버 함수에 대해 작동하지 않습니다. 왜냐하면 액세스하는 데 인스턴스가 필요하지 않고 클래스 수준에 존재하기 때문입니다.

'this' 키워드를 명시적으로 사용할 필요가 없는 경우도 있습니다. 현재 클래스의 메소드를 호출할 때 this 대신 this.method_name()을 사용하는 것처럼 'this' 키워드를 사용하지 않고 메소드를 직접 호출할 수 있으며, 이 경우 'this' 키워드는 컴파일러에 의해 자동으로 추가됩니다. .

아래와 같은 그림 표현을 통해 위의 내용을 이해해 보겠습니다.

C#의 이 키워드

C#에서 이 키워드의 예

C#에서 'this' 키워드를 사용하는 방법은 여러 가지가 있습니다.

예시 #1

현재 인스턴스의 변수와 멤버함수를 참조하는데 사용됩니다.

코드:

using System;
namespace keywords
{
class ThisDemo
{
//instance variable
public string Message;
public string GetMessage()
{
return Message;
}
public void SetMessage(string Message)
{
//"this.Message" refers to instance variable (class member)
this.Message = Message;
}
}
public class program
{
public static void Main()
{
ThisDemo obj = new ThisDemo();
obj.SetMessage("Hello world!");
Console.WriteLine(obj.GetMessage());
}
}
}

출력:

C#의 이 키워드

예시 #2

'this' 키워드를 사용하여 동일한 클래스의 메소드를 호출할 수 있습니다.

코드:

using System;
namespace keywords
{
public class Employee
{
void displaySalary()
{
//calling displayDetails() method of same class
this.displayDetails();
Console.WriteLine("Salary: Rs.50000");
}
void displayDetails()
{
Console.WriteLine("Name: ABC");
Console.WriteLine("ID: 123ABC");
}
public static void Main(String []args)
{
Employee emp = new Employee();
emp.displaySalary();
}
}
}

출력:

C#의 이 키워드

예시 #3

'this' 키워드를 사용하여 동일한 클래스의 생성자를 호출할 수 있습니다.

코드:

using System;
namespace keywords
{
class Student
{
// calling another constructor of the same class
public Student() : this("ABC")
{
Console.WriteLine("Parameterless Constructer of Student class");
}
//parameterized constructor
public Student(string Name)
{
Console.WriteLine("Parameterized constructor of Student class");
}
public void display()
{
Console.WriteLine("display() method of Student class");
}
}
public class program
{
public static void Main()
{
Student stud = new Student();
stud.display();
}
}
}

출력:

C#의 이 키워드

예시 #4

메서드가 동일한 클래스의 객체를 매개변수로 사용하는 경우 해당 메소드를 호출하는 동안 'this' 키워드를 매개변수로 사용할 수 있습니다.

마찬가지로 'this' 키워드를 사용하면 메소드도 같은 클래스의 객체를 반환할 수 있습니다.

코드:

using System;
namespace keywords
{
public class Student
{
double marks;
//method taking object of same class as parameter
void display(Student stud)
{
Console.WriteLine("Marks of student: "+stud.marks);
}
//method returning object of same class
Student addGradeMarks(double marks)
{
this.marks = marks + 5;
display(this);
return this;
}
public static void Main(String[] args)
{
Student stud = new Student();
stud = stud.addGradeMarks(85);
}
}
}

출력:

C#의 이 키워드

예시 #5

이러한 용도 외에도 'this' 키워드의 중요한 용도는 인덱서를 선언하는 데 사용할 수 있다는 것입니다.

코드:

using System;
namespace keywords
{
public class World
{
private string[] continents = new string[7];
//declaring an indexer
public string this[int index]
{
get
{
return continents[index];
}
set
{
continents[index] = value;
}
}
}
public class ThisDemo
{
public static void Main()
{
World world = new World();
world[0] = "Asia";
world[1] = "Africa";
world[2] = "North America";
world[3] = "South America";
world[4] = "Antarctica";
world[5] = "Europe";
world[6] = "Australia";
for (int i = 0; i < 7; i++)
{
Console.Write(world[i]);
Console.Write("\n");
}
}
}
}

출력:

C#의 이 키워드

예시 #6

'this' 키워드를 사용하여 확장 메서드를 선언할 수도 있습니다.

코드:

using System;
namespace keywords
{
//Class1 contains three methods; we will add two more methods in it
//without re-compiling it
class Class1
{
public void Method1()
{
Console.WriteLine("Method1");
}
public void Method2()
{
Console.WriteLine("Method2");
}
public void Method3()
{
Console.WriteLine("Method3");
}
}
// Class2 contains Method4 and Method5 methods
//which we want to add in Class1 class
static class Class2
{
public static void Method4(this Class1 class1)
{
Console.WriteLine("Method4");
}
public static void Method5(this Class1 class1, string str)
{
Console.WriteLine(str);
}
}
public class ThisDemo
{
public static void Main(string[] args)
{
Class1 class1 = new Class1();
class1.Method1();
class1.Method2();
class1.Method3();
class1.Method4();
class1.Method5("Method5");
}
}
}

출력:

C#의 이 키워드

결론

  • 'this' 키워드는 클래스의 현재 인스턴스를 나타내는 데 사용됩니다.
  • 인스턴스 변수와 메소드 매개변수의 이름이 같은 경우 'this' 키워드를 사용하여 이들을 구별할 수 있습니다.
  • 'this'를 사용하여 인덱서를 선언할 수 있습니다.
  • 정적 메서드에서는 'this'를 사용할 수 없습니다.

위 내용은 C#의 이 키워드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:C#의 비공개다음 기사:C#의 비공개