使用途径:
1. 指代类或结构体本身
2. 声明索引器
3.可用于扩展方法的声明
指代类或结构体本身:
public class Person
{
private int id; //声明id字段
//private int _id; 另一种声明习惯,这样就不需要用到this关键字
public Person(int id) //声明id形参,可以发现与字段规则一样
{
this.id = id;
}
}
可用于扩展方法的声明:
方法体内的id,一定是指最近的作用域,即形参里的id,此时如何去指定外部的字段id呢?就可以用this指代类Person,从而指定它的字段
var p1 = new Point(1,2);
var p2 = new Point(x:3);
var p3 = new Point();
class Point
{
public int X {get;set;}
public int Y {get;set;}
//构造函数
public Point (int x, int y)
{
X = x;
Y = y;
}
//重载其他构造函数,并调用已有的构造函数
public Point (int x) : this (x,0)
{
}
public Point() : this (0,0)
{
}
}
用于构建新的重载构造函数时,可以用this指代该类Point (同样的还有base()继承父类的构造函数,这里this()是调用该类中的已存在的构造函数)
public partial class MainWindow
{
public object DataContext {get;set;}
void InitializeComponents()
{
//Initialize components
}
}
public partial class MainWindow
{
public MainWindow()
{
initializeComponents();
}
//使用this扩展构造方法
public MainWindow(object viewModel) : this()
{
this.DataContext = viewModel;
}
}
通过this可以拓展构造方法,传入一些必要的参数,注意执行顺序,先执行继承的构造函数。
其实this就是相当于一个引用,指向的是该类的实例;