在 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.method_name() 而不是this ,我們可以直接呼叫該方法,而無需使用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# 中的 this 關鍵字的詳細內容。更多資訊請關注PHP中文網其他相關文章!