C# 参考之访问关键字:base、this
C# 参考之访问关键字:base、this
发布时间:2016-12-28 来源:查字典编辑
摘要:basebase关键字用于从派生类中访问基类的成员:调用基类上已被其他方法重写的方法。指定创建派生类实例时应调用的基类构造函数。基类访问只能...

base

base关键字用于从派生类中访问基类的成员:

调用基类上已被其他方法重写的方法。

指定创建派生类实例时应调用的基类构造函数。

基类访问只能在构造函数、实例方法或实例属性访问器中进行。

示例:

在派生类中调用基类方法。

//base关键字

//访问基类成员

usingSystem;

publicclassBaseClass

{

protectedstring_className="BaseClass";

publicvirtualvoidPrintName()

{

Console.WriteLine("ClassName:{0}",_className);

}

}

classDerivedClass:BaseClass

{

publicstring_className="DerivedClass";

publicoverridevoidPrintName()

{

Console.Write("TheBaseClassNameis{0}");

//调用基类方法

base.PrintName();

Console.WriteLine("ThisDerivedClassis{0}",_className);

}

}

classTestApp

{

publicstaticvoidMain()

{

DerivedClassdc=newDerivedClass();

dc.PrintName();

}

}

/**//*

控制台输出:

TheBaseClassNameisBaseClass

ThisDerivedClassisDerivedClass

*/

在派生类中调用基类构造函数。

//keywords_base2.cs

usingSystem;

publicclassBaseClass

{

intnum;

publicBaseClass()

{

Console.WriteLine("inBaseClass()");

}

publicBaseClass(inti)

{

num=i;

Console.WriteLine("inBaseClass(int{0})",num);

}

}

publicclassDerivedClass:BaseClass

{

//该构造器调用BaseClass.BaseClass()

publicDerivedClass():base()

{

}

//该构造器调用BaseClass.BaseClass(inti)

publicDerivedClass(inti):base(i)

{

}

staticvoidMain()

{

DerivedClassdc=newDerivedClass();

DerivedClassdc1=newDerivedClass(1);

}

}

/**//*

控制台输出:

inBaseClass()

inBaseClass(1)

*/

注意点

从静态方法中使用base关键字是错误的。

base主要用于面向对象开发的对态这方面,在示例2中有体现。

this

this关键字引用类的当前实例。

以下是this的常用用途:

限定被相似的名称隐藏的成员

将对象作为参数传递到其他方法

声明索引器

示例:

综合示例。

//this关键字

//keywords_this.cs

usingSystem;

classEmployee

{

privatestring_name;

privateint_age;

privatestring[]_arr=newstring[5];

publicEmployee(stringname,intage)

{

//使用this限定字段,name与age

this._name=name;

this._age=age;

}

publicstringName

{

get{returnthis._name;}

}

publicintAge

{

get{returnthis._age;}

}

//打印雇员资料

publicvoidPrintEmployee()

{

//将Employee对象作为参数传递到DoPrint方法

Print.DoPrint(this);

}

//声明索引器

publicstringthis[intparam]

{

get{return_arr[param];}

set{_arr[param]=value;}

}

}

classPrint

{

publicstaticvoidDoPrint(Employeee)

{

Console.WriteLine("Name:{0}nAge:{1}",e.Name,e.Age);

}

}

classTestApp

{

staticvoidMain()

{

EmployeeE=newEmployee("Hunts",21);

E[0]="Scott";

E[1]="Leigh";

E[4]="Kiwis";

E.PrintEmployee();

for(inti=0;i<5;i++)

{

Console.WriteLine("FriendsName:{0}",E[i]);

}

Console.ReadLine();

}

}

/**//*

控制台输出:

Name:Hunts

Age:21

FriendsName:Scott

FriendsName:Leigh

FriendsName:

FriendsName:

FriendsName:Kiwis

*/

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C#教程学习
热门C#教程学习
编程开发子分类