如果说你父类里面有一个成员比如int a;那么你子类里面也可以再定义一个int a,这个时候base.a和this.a表示的就不是一个变量了,如果说子类里面没有,那么base.a和this.a表示的都是一个变量。还有就是重写,覆盖和构造函数里面调用父类的这个方法。可以用:base(),还有就是关于形参名和成员变量相同的时候,因为是就近原则,所以直接写变量名字表示的就是形参,如果加了this表示的就是这个类的成员。C#里面的this和base 跟JAVA里面的this和super是一样的。你在定义一个变量的时候有一个this引用,指向自身,还有一个引用base,指向父类。关于你说的那种情况就是我说的第一种,如果子类成员有和父类成员同名的时候,就必须用this和base区分。
1、this 其作用引用类的当前实例,其实看了下面这个例子就好理解了。this不能用于静态方法中,比如Main~主要三个作用:当前实例、参数传递和索引器关于basebase 关键字用于从派生类中访问基类的成员:
调用基类上已被其他方法重写的方法。
指定创建派生类实例时应调用的基类构造函数。
基类访问只能在构造函数、实例方法或实例属性访问器中进行。 参考资料: http://wxqrachesl.blog.163.com/blog/static/31073665200911267158254/
这么说吧 子类继承了父类的成员(你可以认为子类有了父类的成员)你是想说要是子类有成员 和 继承过来的重名么?你可以尝试下 可能会报错或出警告(要求你 隐藏 父类成员) 回到主题 base 允许你调用父类的构造函数其 我一时想不到有啥其他用处了
如果有和父类重名的方法那子类如何判断?
楼上的已经说的很明白了,现在说些他们的规则:Base 是子类中引用父类
This 是当前类,引用自己 1、尽量少用或者不用base和this。除了避开子类的名称冲突和在一个构造函数中调用其他的构造函数之外,base和this的使用容易引起不必要的结果。
2、在静态成员中使用base和this都是不允许的。原因是,base和this访问的都是类的实例,也就是对象,而静态成员只能由类来访问,不能由对象来访问。
3、base是为了实现多态而设计的。
4、使用this或base关键字只能指定一个构造函数,也就是说不可同时将this和base作用在一个构造函数上。
5、简单的来说,base用于在派生类中访问重写的基类成员;而this用于访问本类的成员,当然也包括继承而来公有和保护成员。
6、除了base,访问基类成员的另外一种方式是:显示的类型转换来实现。只是该方法不能为静态方法。 希望我的回答对你有帮助,如果方便请设为满意答案。