在 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中文网其他相关文章!