首页  >  文章  >  后端开发  >  C# 中的 this 关键字

C# 中的 this 关键字

WBOY
WBOY原创
2024-09-03 15:29:08683浏览

在 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
上一篇:Private in C#下一篇:Static Keyword in C#