【转】C#中base关键字的几种用法
例如:
2.1关于base调用基类构造函数
public class A {public A(){Console.WriteLine("Build A");} } public class B:A {public B():base(){Console.WriteLine("Build B");}static void Main(){B b = new B();Console.ReadLine();} }
2.2关于base在派生类中调用基类的方法。
public class A {public virtual void Hello(){Console.WiriteLine("Hello");} } public class B : A {public override void Hello(){ base.Hello();//调用基类的方法,显示HelloConsole.WiriteLine("World");} }
最后补充下,根据MSDN Library介绍来看这两个关键字都是属于[访问关键字]类型
调用基类上已被其他方法重写的方法。
指定创建派生类实例时应调用的基类构造函数。
基类访问只能在构造函数、实例方法或实例属性访问器中进行。
示例:
1. 在派生类中调用基类方法。
using System; public class BaseClass {protected string _className = "BaseClass";public virtual void PrintName(){Console.WriteLine("Class Name: {0}", _className);} } class DerivedClass : BaseClass {public string _className = "DerivedClass";public override void PrintName(){Console.Write("The BaseClass Name is {0}");//调用基类方法base.PrintName();Console.WriteLine("This DerivedClass is {0}", _className);} } class TestApp {public static void Main(){DerivedClass dc = new DerivedClass();dc.PrintName();} }
2. 在派生类中调用基类构造函数。
// keywords_base2.cs using System; public class BaseClass {int num;public BaseClass(){Console.WriteLine("in BaseClass()");}public BaseClass(int i){num = i;Console.WriteLine("in BaseClass(int {0})", num);} } public class DerivedClass : BaseClass {// 该构造器调用 BaseClass.BaseClass()public DerivedClass(): base(){}// 该构造器调用 BaseClass.BaseClass(int i)public DerivedClass(int i): base(i){}static void Main(){DerivedClass dc = new DerivedClass();DerivedClass dc1 = new DerivedClass(1)();Console.ReadLine();} }
从静态方法中使用 base 关键字是错误的。
base 主要用于面向对象开发的对态这方面,在示例2中有体现。
以下是 this 的常用用途:
限定被相似的名称隐藏的成员
将对象作为参数传递到其他方法
声明索引器
示例:
// this 关键字 // keywords_this.cs using System; class Employee {private string _name;private int _age;private string[] _arr = new string[5];public Employee(string name, int age){// 使用this限定字段,name与agethis._name = name;this._age = age;}public string Name{get { return this._name; }}public int Age{get { return this._age; }}// 打印雇员资料public void PrintEmployee(){// 将Employee对象作为参数传递到DoPrint方法Print.DoPrint(this);}// 声明索引器public string this[int param]{get { return _arr[param]; }set { _arr[param] = value; }} } class Print {public static void DoPrint(Employee e){Console.WriteLine("Name: {0}\nAge: {1}", e.Name, e.Age);} } class TestApp {static void Main(){Employee E = new Employee("Hunts", 21);E[0] = "Scott";E[1] = "Leigh";E[4] = "Kiwis";E.PrintEmployee();for (int i = 0; i < 5; i++){Console.WriteLine("Friends Name: {0}", E[i]);}Console.ReadLine();} }
转载于:https://www.cnblogs.com/eedc/p/6343201.html
【转】C#中base关键字的几种用法相关推荐
- C#中base关键字的几种用法
base其实最大的使用地方在面向对象开发的多态性上,base可以完成创建派生类实例时调用其基类构造函数或者调用基类上已被其他方法重写的方法 例如: 2.1关于base调用基类构造函数 public c ...
- C#中base关键字的几种用法:base()
base其实最大的使用地方在面相对象开发的多态性上,base可以完成创建派生类实例时调用其基类构造函数或者调用基类上已被其他方法重写的方法. 例如: 2.1关于base调用基类构造函数 public ...
- PostgreSQL 数据库中 DISTINCT 关键字的 4 种用法
文章目录 DISTINCT DISTINCT ON IS DISTINCT FROM 聚合函数与 DISTINCT 大家好,我是只谈技术不剪发的 Tony 老师.PostgreSQL 不但高度兼容 S ...
- Java中final关键字的几种用法
在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面大家跟随动力节点java ...
- final关键字_夯实基础:Java中final关键字的几种用法
导语 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构. 关于static请查 ...
- 面向对象篇(OOP)--05 Java中static关键字的四种用法
在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们先来了解一下stat ...
- java this()函数_java中this关键字的三种用法
this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针. this的用法在java中大体可以分为3种: 1.普通的直接引用,this相当于是指向当前对象本身. 2.形参与成员名字重 ...
- java that关键字_Java中this关键字的几种用法
1 . 当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量.(this是当前对象自己) 如:public class Hello { String s = " ...
- Java中this关键字的几种用法
1. 当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量.(this是当前对象自己) 如:public class Hello { String s = &q ...
- 【零基础学Java】—this关键字的三种用法+Java继承的三个特点(二十一)
[零基础学Java]-this关键字的三种用法+Java继承的三个特点(二十一) 一.this关键字的三种用法 在本类的成员方法中,访问本类的成员变量 在本类的成员方法中,访问本类的另一个成员方法 在 ...
最新文章
- PHP new self和new static的区别
- git checkout 命令详解—— Git 学习笔记 16
- 四十一、深入Java中的 File类
- 采用8种相位,每种相位各有两种幅度的QAM调制方法,在1200Baud的信号传输速率下能达到的网数据传输速率为( )
- 机房收费系统——转换list泛型时,字段名称不正确应出现故障
- centos7 开机后进去了命令行_Linux系统管理:开机启动流程(二)
- netty心跳过程中 发送消息失败_netty心跳机制和断线重连(四)
- 微信开放平台Android应用的签名
- vue element form 默认校验
- Docker容器图形界面显示(运行GUI软件)的配置方法
- DataFormatString格式字符串
- 微型计算机原理连线题,微机原理第7章练习题及答案
- macos蓝牙驱动和wifi驱动名称_win7蓝牙装不上?别急着捣鼓驱动软件啦!可能是硬件问题!...
- 2020年阴历二月二十 读书笔记~漫步华尔街③
- vue 抽离公共方法
- 像素、分辨率、图片大小概念
- 苹果手机之间怎么传照片_如何使用蓝牙手机之间传照片
- Ubuntu16.04在4K显示器中,字体太小,进行调整
- robomaster视觉规则细谈
- “1万起投,年化达8%”?天安金交中心卖力“吆喝”的产品,是“香”还是“坑”?
热门文章
- 32G内存oracle内核设置,浅谈安装ORACLE时在Linux上设置内核参数的含义
- 笛卡尔坐标系_笛卡儿坐标系
- python ca模块_23 Python常用模块(一)
- Linux系统(一)文件和目录理解
- SVD在推荐系统中的推导及应用-简单明了
- day13-面向对象
- 随手练——O(n)解决无序数组排序后的相邻最大差值
- MySQL--视图view、触发器trigger、事务(start transaction)、存储过程(特殊的数据逻辑处理函数)、流程控制(if,case....)...
- 设计模式-设计原则-迪米特法则
- sql-查询不同状态下的数据之和