资讯详情

资讯详情

C# 关键字 this 详解:this 访问与构造函数声明

关键字this有两种基本用法一是用于this访问二是在声明构造函数时指定需要先执行的构造函数。一、this 访问在类的实例构造函数和实例函数成员中关键字this表示当前类实例或对象的引用。this不能用在静态构造函数和静态函数成员中也不能在其他地方使用。当在实例构造函数或方法内使用了与字段名相同的变量名或参数名时可以使用this来区分字段和变量或参数。下面的代码演示了this的用法。public class Dog { public string name; public int age; public Dog() { } public Dog(string name) // 在这个函数内name 是指传入的参数 name { this.name name; // this.name 表示字段 name } public Dog(string name, int age) // 在这个函数内name 是指传入的参数 name { // age 是指传入的参数 age this.name name; // this.name 表示字段 name this.age age; // this.age 表示字段 age } }非静态成员可以在构造函数或非静态方法中使用this.来调用或访问也可以直接写变量名。因此this.name name;在语义上等效于name name;。但此时等号左边的name与传入的参数name同名直接写会造成二义性所以要加上this.表示等号左边的name是当前类自己的字段。实际上this被定义为一个常量。因此虽然在类的实例构造函数和实例函数成员中this可以用于引用该函数成员调用所涉及的实例但是不能对this本身赋值或者改变this的值。比如this、--this之类的操作都是非法的。二、this 用于构造函数声明可以使用如下的形式来声明实例构造函数访问修饰符 类名 (形式参数表) : this(实际参数表) { // 语句块 }其中的this表示该类本身所声明的、形式参数表与“实际参数表”最匹配的另一个实例构造函数这个构造函数会在执行正在声明的构造函数之前执行。比如// ThisAndConstructor.cs // 关键字 this 用于声明构造函数 using System; class A { public A(int n) { Console.WriteLine(A.A(int n)); } public A(string s, int n) : this(0) { Console.WriteLine(A.A(string s, int n)); } } class Test { static void Main() { A a new A(A Class, 1); } }将输出A.A(int n) A.A(string s, int n)这说明执行构造函数A(string s, int n)之前先执行了构造函数A(int n)。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →