首页 > 代码库 > c#中this的用法

c#中this的用法

在C#中,this关键字代表当前实例,我们可以用this.来调用当前实例的成员方法,变量,属性,字段等; 
也可以用this来做为参数状当前实例做为参数传入方法. 
还可以通过this[]来声明索引器 

下面是你这段程序的注解: 
// 引入使命空间System 
using System; 
// 声明命名空间CallConstructor 
namespace CallConstructor 

// 声明类Car 
public class Car 

// 在Car类中: 
// 声明一个非静态的整型变量petalCount,初始值为0 
// 未用Static声明的变量叫做静态变量,非静态成员属于 
类的实例,我们只能在调用类的构造函数对类进行实例化后才能通过所得的实例加"."来访问 
int petalCount = 0; 
// 声明一个非静态的字符串变量s,初始值为"null"; 
// 注意:s = "null"与s = null是不同的 
String s = "null"; 
// Car类的默认构造函数 
Car(int petals) 

// Car类的默认构造函数中为 petalCount 赋值为传入的参数petals的值 
petalCount = petals; 
// 输出petalCount 
Console.WriteLine("Constructor w/int arg only,petalCount = " + petalCount); 

// 重载Car类的构造函数 
// : this(petals) 表示从当前类中调用petals变量的值来作为构造函数重载方法Car(String s, int petals)的第二个参数
Car(String s, int petals) 
: this(petals) 

// 在构造函数中为s赋值 
// 非静态成员可以在构造函数或非静态方法中使用this.来调用或访问,也可以直接打变量的名字,因此这一句等效于s = s,但是这时你会发类的变量s与传入的参数s同名,这里会造成二定义,所以要加个this.表示等号左边的s是当前类自己的变量 
this.s = s; 
Console.WriteLine("String & int args"); 

// 重载构造函数,: this("hi", 47) 表示调Car(String s, int petals) 这个重载的构造函数,并直接传入变量"hi"和47 
Car() 
: this("hi", 47) 

Console.WriteLine("default constructor"); 

public static void Main() 

Car x = new Car(); 
Console.Read(); 


}

<iframe id="google_ads_frame2" vspace="0" height="250" marginHeight="0" src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-3447371224873639&output=html&h=250&slotname=8660799060&adk=1970350646&w=300&lmt=1401208597&flash=0&url=http%3A%2F%2Fwww.cnblogs.com%2Fgc2013%2Fp%2F3753508.html&dt=1401208600054&shv=r20140520&cbv=r20140417&saldr=sb&correlator=1401208599839&frm=20&ga_vid=1304086684.1400769066&ga_sid=1401204879&ga_hid=1586778844&ga_fc=1&u_tz=480&u_his=119&u_java=1&u_h=768&u_w=1364&u_ah=740&u_aw=1364&u_cd=16&u_nplug=0&u_nmime=0&dff=verdana&dfs=12&adx=0&ady=30952&biw=314&bih=74&eid=317150304&oid=3&rx=0&eae=0&docm=9&vis=0&fu=0&ifi=2&xpc=0N3p0RkTcQ&p=http%3A//www.cnblogs.com&dtd=118" frameBorder="0" width="300" allowTransparency="true" name="google_ads_frame2" marginWidth="0" scrolling="no" hspace="0"></iframe><iframe id="google_ads_frame3" vspace="0" height="250" marginHeight="0" src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-3447371224873639&output=html&h=250&slotname=8660799060&adk=1970350646&w=300&lmt=1401208597&flash=0&url=http%3A%2F%2Fwww.cnblogs.com%2Fgc2013%2Fp%2F3753508.html&dt=1401208600181&shv=r20140520&cbv=r20140417&saldr=sb&prev_slotnames=8660799060&correlator=1401208599839&frm=20&ga_vid=1304086684.1400769066&ga_sid=1401204879&ga_hid=1586778844&ga_fc=1&u_tz=480&u_his=119&u_java=1&u_h=768&u_w=1364&u_ah=740&u_aw=1364&u_cd=16&u_nplug=0&u_nmime=0&dff=verdana&dfs=12&adx=304&ady=31202&biw=314&bih=74&eid=317150304&oid=3&rx=0&eae=0&docm=9&vis=0&fu=0&ifi=3&xpc=f5gVWBdoBX&p=http%3A//www.cnblogs.com&dtd=41" frameBorder="0" width="300" allowTransparency="true" name="google_ads_frame3" marginWidth="0" scrolling="no" hspace="0"></iframe>