• C#中的关键字之:base、this

    • 关键字:

      C#关键字,base,this

      来源:北大青鸟成都金晨 发布时间:2008-12-24 0:00:00
      C# 中的关键字之:base、this。base 关键字用于从派生类中访问基类的成员:调用基类上已被其他方法重写的方法。

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

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

        示例:

        在派生类中调用基类方法。

      以下是引用片段:
        // base 关键字
        // 访问基类成员
        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();
        }
        }
        /**//*

        控制台输出:

        The BaseClass Name is BaseClass

        This DerivedClass is DerivedClass

        */

        在派生类中调用基类构造函数。

      以下是引用片段:
        // 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);
        }
        }
        /**//*

        控制台输出:

        in BaseClass()

        in BaseClass(1)

        */

        注意点:

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

        base  主要用于面向对象开发的对态这方面,在示例2中有体现。

        this 关键字引用类的当前实例。