C# 参考之访问关键字:base、this

时间:2021-05-19

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();
}
}


在派生类中调用基类构造函数。
//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);
}
}



注意点

从静态方法中使用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();
}
}

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章