首頁  >  文章  >  後端開發  >  C# 中的 this 關鍵字

C# 中的 this 關鍵字

WBOY
WBOY原創
2024-09-03 15:29:08681瀏覽

在 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.method_name() 而不是this ,我們可以直接呼叫該方法,而無需使用this 關鍵字,在這種情況下,編譯器會自動新增this 關鍵字.

讓我們透過以下圖示來理解以上觀點:

C# 中的 this 關鍵字

此關鍵字在 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# 中的 this 關鍵字

範例#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# 中的 this 關鍵字

範例#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# 中的 this 關鍵字

範例#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# 中的 this 關鍵字

範例#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# 中的 this 關鍵字

範例#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’可用來宣告索引器。
  • 我們不能在靜態方法中使用「this」。

以上是C# 中的 this 關鍵字的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:C# 中的私有下一篇:C# 中的私有