C#中this与base的区别
来源:互联网 发布:淘宝黑搜索 编辑:程序博客网 时间:2024/05/16 12:16
【意义】
this:指当前类,this调用当前类的属性,方法,包括构造函数的方法,继承本类的构造函数
base:指当前类的父类,可调用父类的非私有属性,方法,继承父类的构造函数括号里的参数
【用处】
一:this的用处
1.限定被相似的名称隐藏的成员,方法或函数(多数用在构造函数中)
class Person { private string name; public Person(string name) { this.name = name; } }
由于this.name中的name和入参name的名称一样,即被入参隐藏了,所以要用this限定name是本类的属性
2.将自己this对象作为参数传递给其它方法
3.声明索引器class Teacher { public void tshow() { Console.WriteLine("我是老师!"); Console.WriteLine(this);//显示的是本类的类名 } }
二:base的用处(base实现了多态)private int _index; public int this[int index] { get { return _index; } set { _index = index; } }
1.在子类中通过base调用父类的构造函数,即在子类初始化时和父类进行通信。
2.调用基类上已被其它方法重写的方法class Program { static void Main(string[] args) { Person p = new Person("小李"); p.show(); Teacher t = new Teacher("小刘",18); t.tshow(); Console.Read(); } } class Person { protected string name; public Person(string name) { this.name = name; } public void show() { Console.WriteLine("我属于人类!"); } } class Teacher:Person { public Teacher(string name,int age) : base(name) { this.Age = age; } private int _age; public int Age { get { return _age; } //读 set { _age = value; } //写 } public void tshow() { Console.WriteLine("我是学生{0}{1}!",name,Age); } }
3.调用基类的构造函数class Program { static void Main(string[] args) { Person p = new Person(); p.show(); Teacher t = new Teacher(); t.show(); Console.Read(); } } class Person { public virtual void show() { Console.WriteLine("我属于人类"); } } class Teacher:Person { public override void show() { base.show(); Console.WriteLine("我是老师"); } }
【总结】class Program { static void Main(string[] args) { Person p = new Person(); p.show(); Teacher t = new Teacher(); t.tshow(); Console.Read(); } } class Person { public void show() { Console.WriteLine("我属于人类"); } } class Teacher:Person { public void tshow() { base.show(); Console.WriteLine("我是老师"); } }
【注】在多层继承中:
1>有重载,base指向直接继承的父类
2>无重载,base可指向任意上级父类
不能在静态方法中引用this和base,因为当类第一次被加载的时候,静态成员已经被加载到静态存储区,此时类的对象还有可能能没有创建,而this和base访问的都是类的实例,也就是对象,而静态成员只能由类访问,不能由对象访问,所以静态方法中不能调用类成员字段。
0 0
- C#中this与base的区别
- c#中this和base的区别
- C#中base跟this的区别
- 构造函数中base和this的用法与区别
- 构造函数中base和this的用法与区别
- C# base和this的区别
- C#构造函数里的base和this的区别
- C#构造函数里的base和this的区别
- C#构造函数里的base和this的区别
- C#构造函数里的base和this的区别
- C#构造函数里的base和this的区别
- C# base this的使用
- base 和this的区别
- C#中base、this关键字的几种用法
- C++与C#中this关键字的区别
- C#中base和this关键字
- C#中base和this关键字
- C#中base和this关键字
- 第十周项目3-利用二叉树遍历思想解决问题(2)
- 第十六周--冒泡排序
- Fresco 图片加载框架的简单使用
- 华为等 3G、4G模块拨号上网过程分析
- Python学习笔记 --- 操作时间,计算时间差
- C#中this与base的区别
- RabbitMQ的订阅和发布步骤详解
- 第十周项目3-利用二叉树遍历思想解决问题(3)
- 第13周项目2 Kruskal算法的验证
- 翻转链表,lintcode
- 每个程序员都要知道的35个jQuery小技巧
- springMVC+mybatis整合
- 人工智能调研总结
- Maven阿里云镜像的配置