1.base其实最大的使用地方在面相对性开发的多态性上,base可以完成创建派生类实例时调用其基类构造函数或者调用基类上已被其他方法重写的方法。
例如:
2.关于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.
3.关于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介绍来看这两个关键字都是属于[访问关键字]类型
4.关于base
base
关键字用于从派生类中访问基类的成员:
调用基类上已被其他方法重写的方法。
指定创建派生类实例时应调用的基类构造函数。
基类访问只能在构造函数、实例方法或实例属性访问器中进行。
示例:
5.
在派生类中调用基类方法。
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();
}
}
6.
在派生类中调用基类构造函数。
// 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();
}
}
7.注意:
从静态方法中使用 base
关键字是错误的。
base 主要用于面向对象开发的对态这方面,在示例2中有体现。