首页 > 代码库 > C#中base 关键字的作用

C#中base 关键字的作用

引用:http://msdn.microsoft.com/en-us/library/hfw7t1ce.aspx

base

base 关键字用于从派生类中访问基类的成员:

  • 调用基类上已被其他方法重写的方法。

  • 指定创建派生类实例时应调用的基类构造函数。

基类访问只能在构造函数、实例方法或实例属性访问器中进行。

从静态方法中使用 base 关键字是错误的。

 

一.在本例中,基类 Person 和派生类 Employee 都有一个名为 Getinfo 的方法。通过使用 base 关键字,可以从派生类中调用基类的 Getinfo 方法。

 1 using System; 2 using System.Text; 3  4 namespace ConsoleApplication1 5 { 6     class Program 7     { 8         public class Person 9         {10             protected string ssn = "444-55-6666";11             protected string name = "John L. Malgraine";12 13             public virtual void GetInfo()14             {15                 Console.WriteLine("Name: {0}", name);16                 Console.WriteLine("SSN: {0}", ssn);17             }18         }19         class Employee : Person20         {21             public string id = "ABC567EFG";22             public override void GetInfo()23             {24                 // Calling the base class GetInfo method:25                 base.GetInfo();26                 Console.WriteLine("Employee ID: {0}", id);27             }28         }29 30         static void Main(string[] args)31         {32             Employee E = new Employee();33             E.GetInfo();34             Console.ReadKey();35         }36     }37 }

运行结果

说明base作用起到了从派生类中调用基类的方法。注意:在重写基类后调用基类的方法是重写后的方法了

 

二.本示例显示如何指定在创建派生类实例时调用的基类构造函数。

 1 using System; 2 using System.Text; 3  4 namespace ConsoleApplication1 5 { 6     class Program 7     { 8         public class BaseClass 9         {10             int num;11 12             public BaseClass()13             {14                 Console.WriteLine("in BaseClass()");15             }16 17             public BaseClass(int i)18             {19                 num = i;20                 Console.WriteLine("in BaseClass(int i)");21             }22 23             public int GetNum()24             {25                 return num;26             }27         }28 29         public class DerivedClass : BaseClass30         {31             // This constructor will call BaseClass.BaseClass()32             public DerivedClass()33                 : base()34             {35             }36 37             // This constructor will call BaseClass.BaseClass(int i)38             public DerivedClass(int i)39                 : base(i)40             {41             }42         }43 44         static void Main(string[] args)45         {46             DerivedClass md = new DerivedClass();47             DerivedClass md1 = new DerivedClass(1);48             Console.ReadKey();49         }50     }51 }

 

C#中base 关键字的作用