C#에서 'this' 키워드는 인스턴스 메서드나 생성자 내에서 현재 클래스의 인스턴스 멤버를 참조하는 데 사용됩니다. 메소드 매개변수와 인스턴스 변수의 이름이 동일한 경우 이름 모호성을 제거합니다. 다음은 C#에서 'this' 키워드의 몇 가지 용도입니다.
설명 구문:
C#에서 'this' 키워드를 사용하는 구문은 다음과 같습니다.
this.instance_variable
위 구문에서 'this'는 키워드이고, instance_variable은 클래스의 인스턴스 변수 이름입니다.
동일한 클래스의 개체를 매개변수로 메서드에 전달하는 경우 구문은 다음과 같습니다.
method_name(this);
위 구문에서 'this' 키워드는 현재 클래스의 객체를 참조하고 method_name은 호출할 메소드의 이름입니다.
C#의 'this' 키워드는 클래스의 'this' 포인터로 사용됩니다. 클래스의 현재 인스턴스를 나타내는 데 사용됩니다. C#에서 'this' 포인터는 클래스의 비정적 멤버에 대해서만 작동합니다. 'this'는 현재 인스턴스에서 작동하고 비정적 멤버는 클래스 인스턴스에서 액세스할 수 있기 때문입니다. 'this' 포인터는 정적 변수 및 멤버 함수에 대해 작동하지 않습니다. 왜냐하면 액세스하는 데 인스턴스가 필요하지 않고 클래스 수준에 존재하기 때문입니다.
'this' 키워드를 명시적으로 사용할 필요가 없는 경우도 있습니다. 현재 클래스의 메소드를 호출할 때 this 대신 this.method_name()을 사용하는 것처럼 'this' 키워드를 사용하지 않고 메소드를 직접 호출할 수 있으며, 이 경우 'this' 키워드는 컴파일러에 의해 자동으로 추가됩니다. .
아래와 같은 그림 표현을 통해 위의 내용을 이해해 보겠습니다.
C#에서 'this' 키워드를 사용하는 방법은 여러 가지가 있습니다.
현재 인스턴스의 변수와 멤버함수를 참조하는데 사용됩니다.
코드:
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()); } } }
출력:
'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(); } } }
출력:
'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(); } } }
출력:
메서드가 동일한 클래스의 객체를 매개변수로 사용하는 경우 해당 메소드를 호출하는 동안 '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); } } }
출력:
이러한 용도 외에도 '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"); } } } }
출력:
'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#의 이 키워드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!