base其实最大的使用地方在面向对象开发的多态性上,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();}
}

创建一个B的实例对象,获得结果是同时打印Build A和Build B
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");}
}

这样如果程序调用B.Hello()获得的效果将会使Hello World.

最后补充下,根据MSDN Library介绍来看这两个关键字都是属于[访问关键字]类型

+++++++++++++++++++++++++++++ 无敌分割线+++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++ 文章二 +++++++++++++++++++++++++++++

关于base

base 关键字用于从派生类中访问基类的成员:
调用基类上已被其他方法重写的方法。
指定创建派生类实例时应调用的基类构造函数。
基类访问只能在构造函数、实例方法或实例属性访问器中进行。

示例:

  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();}
}
  1. 在派生类中调用基类构造函数。
// 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 关键字引用类的当前实例。
以下是 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关键字的几种用法相关推荐

  1. C#中base关键字的几种用法:base()

    base其实最大的使用地方在面相对象开发的多态性上,base可以完成创建派生类实例时调用其基类构造函数或者调用基类上已被其他方法重写的方法. 例如: 2.1关于base调用基类构造函数 public ...

  2. PostgreSQL 数据库中 DISTINCT 关键字的 4 种用法

    文章目录 DISTINCT DISTINCT ON IS DISTINCT FROM 聚合函数与 DISTINCT 大家好,我是只谈技术不剪发的 Tony 老师.PostgreSQL 不但高度兼容 S ...

  3. Java中final关键字的几种用法

    在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面大家跟随动力节点java ...

  4. final关键字_夯实基础:Java中final关键字的几种用法

    导语 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构. 关于static请查 ...

  5. 面向对象篇(OOP)--05 Java中static关键字的四种用法

    在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们先来了解一下stat ...

  6. java this()函数_java中this关键字的三种用法

    this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针. this的用法在java中大体可以分为3种: 1.普通的直接引用,this相当于是指向当前对象本身. 2.形参与成员名字重 ...

  7. java that关键字_Java中this关键字的几种用法

    1 . 当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量.(this是当前对象自己) 如:public class Hello { String s = " ...

  8. Java中this关键字的几种用法

    1.     当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量.(this是当前对象自己) 如:public class Hello { String s = &q ...

  9. 【零基础学Java】—this关键字的三种用法+Java继承的三个特点(二十一)

    [零基础学Java]-this关键字的三种用法+Java继承的三个特点(二十一) 一.this关键字的三种用法 在本类的成员方法中,访问本类的成员变量 在本类的成员方法中,访问本类的另一个成员方法 在 ...

最新文章

  1. linux nat 端口,linux – iptables nat只是端口25?
  2. 小猿圈linux之使用VMware workstation安装Linux虚拟机
  3. sublime快捷键
  4. Http请求url参数字符集
  5. html 桌面截图,如何使用javascript在html中截取屏幕截图?
  6. SpringBoot与SpringCloud的关系与区别
  7. c语言中switch的用法是什么?
  8. 12.深度学习练习:Residual Networks(注定成为经典)
  9. PTA-7-1 输出大写英文字母 (15分)(C语言)
  10. 编译 Linux2.6 内核总结【ZT】
  11. 深度学习开源项目学习
  12. C语言 — 编程规范
  13. 在word文档中插入代码_如何在自动更新的Word文档中插入当前的月份和年份
  14. 面向开发者的网站,真的是认真设计过的吗?
  15. channel练习题
  16. MUD教程--巫师入门教程3
  17. Android热修复之Tinker集成最新详解
  18. 微信支付的支付金额计算
  19. 简单说说 Servlet
  20. 2017年7月14日 星期五 --出埃及记 Exodus 28:5

热门文章

  1. 学习JS面向对象成果,借国庆发布个最新作品与大家交流
  2. Python学习笔记__13.2章 requests
  3. react-redux的Provider和connect
  4. Fortinet网络接入及安全方案配置步骤
  5. 算法笔记_114:等额本金(Java)
  6. JDK8:Lambda表达式操作List集合
  7. 内存技术:入门和测试挑战
  8. SpringBoot巧用 @Async 提升API接口并发能力!
  9. 全民K歌直播推荐算法实践
  10. 这套Java调优方案太顶了!同时支撑10个618大促都不是问题