打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
转:C#中base关键字的几种用法
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();//调用基类的方法,显示Hello
Console.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();
}
}
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 关键字引用类的当前实例。
以下是 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与age
this._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;="">
{
Console.WriteLine('Friends Name: {0}', E[i]);
}
Console.ReadLine();
}
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
接口与多态性
C#的一些语言特性
C#中的继承、重写、覆盖、多态、virtual override 以及其他-程序开发-红黑联盟
C#学习第八天
C# 抽象类(abstract)
C#-多态
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服