为了账号安全,请及时绑定邮箱和手机立即绑定

c#中的base关键字

c#中的base关键字

C#
拉风的咖菲猫 2018-08-01 14:14:30
书上的解释是这样的啊.它用于表示父类,通过它可以访问父类的成员.我是这样想的啊?this表当前实例吗,访问类本身成员。既然是继承了父类,那父类能访问到的成员也就是子类的成员啊。用this也能访问到啊,base怎么感觉纯属多余...
查看完整描述

2 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

楼上的已经说的很明白了,现在说些他们的规则:Base 是子类中引用父类
This 是当前类,引用自己 1、尽量少用或者不用base和this。除了避开子类的名称冲突和在一个构造函数中调用其他的构造函数之外,base和this的使用容易引起不必要的结果。
2、在静态成员中使用base和this都是不允许的。原因是,base和this访问的都是类的实例,也就是对象,而静态成员只能由类来访问,不能由对象来访问。
3、base是为了实现多态而设计的。
4、使用this或base关键字只能指定一个构造函数,也就是说不可同时将this和base作用在一个构造函数上。
5、简单的来说,base用于在派生类中访问重写的基类成员;而this用于访问本类的成员,当然也包括继承而来公有和保护成员。
6、除了base,访问基类成员的另外一种方式是:显示的类型转换来实现。只是该方法不能为静态方法。 希望我的回答对你有帮助,如果方便请设为满意答案。

查看完整回答
反对 回复 2018-08-06
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

如果说你父类里面有一个成员比如int a;那么你子类里面也可以再定义一个int a,这个时候base.a和this.a表示的就不是一个变量了,如果说子类里面没有,那么base.a和this.a表示的都是一个变量。还有就是重写,覆盖和构造函数里面调用父类的这个方法。可以用:base(),还有就是关于形参名和成员变量相同的时候,因为是就近原则,所以直接写变量名字表示的就是形参,如果加了this表示的就是这个类的成员。C#里面的this和base 跟JAVA里面的this和super是一样的。你在定义一个变量的时候有一个this引用,指向自身,还有一个引用base,指向父类。关于你说的那种情况就是我说的第一种,如果子类成员有和父类成员同名的时候,就必须用this和base区分。

查看完整回答
反对 回复 2018-08-06
  • 2 回答
  • 0 关注
  • 698 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信