C#中base和this关键字
this:
用于引用类的当前实例,也包括继承而来的方法,通常可以隐藏this。
MSDN中的小结功能主要包括:
(1)限定被相似的名称隐藏的成员
(2)将对象作为参数传递到其他方法
(3)声明索引器
this指代类对象本身,用于访问本类的所有常量、字段、属性和方法成员,而且不管访问元素是任何访问级别。因为,this仅仅局限于对象内部,对象外部是无法看到的,这就是this的基本思想。另外,静态成员不是对象的一部分,因此不能在静态方法中引用this。
在C#中,this关键字代表当前实例,我们可以用this.来调用当前实例的成员方法,变量,属性,字段等;
下面是你这段程序的注解:
源码:
public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Cat cat = new Cat("咪咪"); MessageBox.Show("我的名字是:" + cat.Myneme()); } class Animal { protected string name = ""; protected int shoutNum = 3; public Animal(string name) { this.name = name; } } class Cat : Animal { public Cat(string name): base(name) { } public string Myneme() { String myneme = name; return myneme; } } }
通用规则:1、尽量少用或者不用base和this。除了避开子类的名称冲突和在一个构造函数中调用其他的构造函数之外,base和this的使用容易引起不必要的结果。
2、在静态成员中使用base和this都是不允许的。原因是,base和this访问的都是类的实例,也就是对象,而静态成员只能由类来访问,不能由对象来访问。
3、base是为了实现多态而设计的。
4、使用this或base关键字只能指定一个构造函数,也就是说不可同时将this和base作用在一个构造函数上。
5、简单的来说,base用于在派生类中访问重写的基类成员;而this用于访问本类的成员,当然也包括继承而来公有和保护成员。
6、除了base,访问基类成员的另外一种方式是:显示的类型转换来实现。只是该方法不能为静态方法。
- 2楼lfmilaoshi3小时前
- 很好,详细
- 1楼shan9liang昨天 20:07
- 加油吧