一、this关键字
在C#中,this关键字有以下3种常见的用法:
1.用在类的属性、实例方法或实例构造方法中,区分成员名和本地变量(或参数)。下面的示例声明一个名为Myclass的类,类中包括一个实例字段myVal和一个实例构造函数,该构造函数带一个名为myVal的参数,在方法中,通过this可以在语义上区分成员名myVal和参数名myVal。(注意:在实际编程中是不建议参数名和字段名相同的,这样做降低了代码的易读性,这里只是为了说明this关键字的用法而已)。
1 class MyClass
2 {
3 // 声明一个名为"myVal"的整型字段 4 public int myVal = 10; 5 6 // 声明一个构造函数,该函数带一个名为"myVal"的参数 7 public MyClass(int myVal) 8 { 9 // "this"表示MyClass类的当前实例 10 // 在这里通过this可以在语义上区分成员名myVal和参数名myVal 11 this.myVal += myVal; 12 } 13 }
2.this表示的是当前对象,可以把它作为实参传递到其它方法。例如下面声明一个类MyClass1,它包括一个实例成员方法Compute,而Compute带一个类型为MyClass的参数,该参数在方法中参加运算。
1 class MyClass1
2 {
3 // 声明一个计算的方法,参数类型为MyClass 4 public static int Compute(MyClass mc) 5 { 6 int resutl = 0; 7 if (mc != null) 8 { 9 resutl += mc.myVal; 10 } 11 return resutl; 12 } 13 }
下面在类MyClass的构造方法中添加了一个本地变量的声明,该变量初始化的值来自MyClass1的Compute方法的计算结果。而这时就可以将this作为实参传递给调用方法了:
1 class MyClass
2 {
3 // 声明一个名为"myVal"的整型字段 4 public int myVal = 10; 5 6 // 声明一个构造函数,该函数带一个名为"myVal"的参数 7 public MyClass(int myVal) 8 { 9 // "this"表示MyClass类的当前实例 10 // 在这里通过this可以在语义上区分成员名myVal和参数名myVal 11 this.myVal += myVal; 12 13 // 使用this作为当前对象的实参传递给Compute方法 14 int res = myVal + MyClass1.Compute(this); 15 } 16