C# base和this的用法
/*
* this关键字
* this关键字引用类的当前实例
* 注意:静态成员方法中不能使用this关键字,this关键字只能在实例构造函数、实例方法或实例访问器中使用
*/
/*
* base关键字
* base关键字用于从派生类中访问基类的成员;
* 指定创建派生类实例时调用基类构造函数;
* 调用基类上已被重写的方法
* 注意:不能从静态方法中使用base关键字,base关键字只能在实例构造函数、实例方法或实例访问器中使用
*/
base用法
1、base调用构造方法
public class BaseClass
{
public BaseClass()
{
Console.WriteLine("调用基类--无参数的构造函数");
} public BaseClass(string name)
{
Console.WriteLine("调用基类--有参数的构造函数");
}
} public class DerivedClass:BaseClass
{
public DerivedClass()
: base()
{ }
public DerivedClass(string name)
: base(name)
{ } static void Main()
{
DerivedClass a = new DerivedClass();//调用基类--无参数的构造函数
DerivedClass b = new DerivedClass("Andy");//调用基类--有参数的构造函数
Console.ReadLine();
}
}
2、base在派生类中调用基类的方法
public class BaseClass
{
public virtual void GetInfo()
{
Console.WriteLine("Andy.");
}
} public class DerivedClass :BaseClass
{ public override void GetInfo()
{
base.GetInfo();//调用基类的方法,显示Andy.
Console.WriteLine("Chen");//显示Andy.Chen
} }
base和this的综合使用
public class MyBaseClass
{
public MyBaseClass()
{
Console.Write("调用父类无参数的构造函数");
} public MyBaseClass(int i)
{
Console.Write("调用父类一个参数的构造函数");
}
} public class MyDerivedClass : MyBaseClass
{
public int age;
public static int age2;//只要类里存在静态变量,那么静态变量总是最先初始化的。 //静态构造函数只执行一次
static MyDerivedClass() //既然要初始化静态变量,就要调用静态的构造函数。
{
age2 = ;
Console.Write(age2); } public MyDerivedClass()
: this()//调用当前实例有参数的构造函数。如果只调用这个构造函数,那还需要调用一次基类没有参的构造函数!!!
{
age = ;
Console.WriteLine(age);
} public MyDerivedClass(int i) : base(i)//调用基类有参数的构造函数
{
age = ;
Console.WriteLine(age);
} public MyDerivedClass(int i, int j)
{
Console.WriteLine("两个变量的参数");
}
} class Program
{
static void Main(string[] args)
{
MyDerivedClass myder = new MyDerivedClass(); //输出100 ,"调用父类无参数的构造函数",101
//执行顺序:<1>: static MyDerivedClass() <2>: public MyBaseClass() <3>:public MyDerivedClass() //--------------------------------------------------------------------------------------------- MyDerivedClass myder2 = new MyDerivedClass(); //输出"调用父类无参数的构造函数",102。 //在初始化myder对象的时候已经初始化过静态变量age2了。因为静态构造函数最多执行一次,所以初始化myder2对象的时候就不会在继续初始化静态变量age2了
//执行顺序:<1>: public MyBaseClass() <2>: public MyDerivedClass(int i) //假如我想在初始化myder2对象的时候调用父类带有一个参数的构造函数怎么办呢?很好办只要在派生类的构造函数后面加一个:base(i)
/* base 关键字用于从派生类中访问基类的成员;指定创建派生类实例时应调用的基类构造函数。 public MyDerivedClass(int i):base(i)
{
age = 102;
Console.WriteLine(age);
} 执行顺序:<1>: public MyBaseClass(int i) <2>: public MyDerivedClass(int i)
顾这里输出的是 "调用父类一个参数的构造函数",102
*/
//--------------------------------------------------------------------------------------------- MyDerivedClass myder3 = new MyDerivedClass(, ); //输出"调用父类无参数的构造函数","两个变量的参数"
//执行顺序:<1>: public MyBaseClass() <2>: public MyDerivedClass(int i, int j) Console.ReadKey();
}
}
C# base和this的用法的更多相关文章
- EasyUI中Base(基础)的基本用法
EasyUI中Base(基础)的用法 一.Base(基础) 1.parser 解析器 2.easyloader 简单加载 3.draggable 拖动 4.droppable 放置 5.resizab ...
- C#中default 、base 、this关键字用法简介
C#中default关键字用法简介 default 关键字可在switch语句或泛型代码中使用.switch语句:指定默认标签.泛型代码:指定类型参数的默认值.对于引用类型为空,对于值类型为零swi ...
- base和this的用法
[意义] this:指当前类,this调用当前类的属性,方法,包括构造函数的方法,继承本类的构造函数 base:指当前类的父类,可调用父类的非私有属性,方法,继承父类的构造函数括号里的参数 [用处] ...
- c#基础学习汇总----------base和this,new和virtual
base和this是c#中的两访问关键字,目的是用于实现继承机制的访问操作,来满足对对象成员的访问,从而为多态机制提供更加灵活的处理方式. 在看<你必须知道的.Net>一书中有一个例子很好 ...
- base标签
我们扒取到网站源码很多时候发现路径是采用相对路径,这时候我们就需要采用base标签了,用法非常简单, <base href="我们扒取网站的域名"/> 这时相对路径就相 ...
- Java进击C#——语法之面向对象
本章简言 上一章笔者讲到关于ADO.NET相关的知识,知道了如何去访问数据库.本章将来讲关于面向对象的思想.不管在JAVA还是在C#面向对象思想的重要性都是占了一个很大的成份.往往他就像呼吸一样子,更 ...
- 使 SortList 实现重复键排序
SortList 默认对按Key来排序,且Key值不能重复,但有时可能需要用有重复值的Key来排序,以下是实现方式: 1.对强类型:以float为例 #region 使SortList能对重复键排序 ...
- saltstack实战4--综合练习1
规范配置管理 实际工作中可能会有现网环境,基线环境,开发环境. 需要使用saltstack统一管理.机器多了,业务多了,可能配置文件存放的会比较乱,因此可以统一管理起来 我们可以再加2个目录,test ...
- python学习第十八天 --错误&异常处理
这一章节主要讲解python的错误和异常处理 什么是错误和异常?及其区别? 错误: 1.语法错误:代码不符合解释器或者编译器语法. 2.逻辑错误:不完整或者不合法输入或者计算出现问题. 异常:执行 ...
随机推荐
- Go Revel - Templates(模板)
revel使用Go官方的模板库.它会在两个目录查找模板文件: 1.应用的`views`目录以及它的所有子目录 2.revel库自己的`templates`目录 revel为错误页面提供了模板(在`de ...
- git 忽略已经添加到版本库的文件
第一步: 指令:git rm -r --cached YOUR_PATH YOUR_PATH 即 你的文件,-r 指定了递归所有的子文件夹. 第二步: 修改项目根目录下的 .gitignore 文件, ...
- PHP利用CURL_MULTI实现多线程
PHP中的curl_multi一类函数可以实现同时请求多个url,而不是一个一个依次请求,这就类似一个进程实现了多个线程的功能,因此可以使用PHP利用CURL_MULTI实现完成多线程类的任务,下面就 ...
- Python 类的初见
#定义一个Python类 class Cat: #self关键字相当于c++类中的this指针 def eat(self): print("i am eating .") def ...
- 如何安装Node.js环境
一.在Windows系统下安装Node.js环境 1. 下载地址:官网http://nodejs.org/ 2. 安装nodejs,根据自己情况,安装路径 D:\Program Files\nod ...
- ADT安装
Eclipse安装ADT很简单,直接把下载好的ADT文件解压,覆盖到eclipse目录下的features和plugins目录即可, MyEclipse配置就稍微麻烦了点,我刚开始配置了好几次都不成功 ...
- 【Html】Clipboard.js 实现点击复制,剪切板操作
可以使用cdn 或者直接下载 设置好引用路径(百度云下载) <script type="text/javascript" src="./dist/clipboard ...
- Android开发之旅(二)服务生命周期和广播接收者生命周期
引言 应用程序组件有一个生命周期——一开始Android实例化他们响应意图,直到结束实例被销毁.在这期间,他们有时候处于激活状态,有时候处于非激活状态:对于活动,对用户有时候可见,有时候不可见.组件生 ...
- e612. Moving the Focus to the Next or Previous Focusable Component
The methods to move the focus to the next or to the previous focusable component are Component.trans ...
- Sql Server性能优化辅助指标 - SET STATISTICS TIME ON和SET STATISTICS IO ON
1.前言 对于优化SQL语句或存储过程,以前主要是用如下语句来判断具体执行时间,但是SQL环境是复杂多变的,下面语句并不能精准判断性能是否提高:如果需要精确知道CPU.IO等信息,就无能为力了. ), ...