C#关键字

C#关键字-base的使用


base 关键字对于有面向对象观念的开发者并不陌生,

而本篇文章只是针对 base (C# 参考) 文章做个笔记而已,避免自己忘记。

1、base 关键字是用来存取衍生类中基底类的成员

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

3、所存取的基底类是类声明中所指定的基底类。

例如,如果您指定 class ClassB : ClassA,则不论 ClassA 的基底类为何,都会从 ClassB 存取 ClassA 成员。

4、仅允许在“建构函数”、“执行个体方法”或“执行个体属性存取子”中进行基底类存取。

5、可以想像成基底类名称的别名。

范例一、

于执行个体方法中进行基底类存取

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Employee E = new Employee();
            E.GetInfo();
            Console.ReadKey();
        }
    }

    public class Person
    {
        protected string ssn = "444-55-6666";
        protected string name = "John L. Malgraine";

        public virtual void GetInfo()
        {
            Console.WriteLine("Name: {0}", name);
            Console.WriteLine("SSN: {0}", ssn);
        }
    }

    class Employee : Person
    {
        public string id = "ABC567EFG";
        public override void GetInfo()
        {
            // Calling the base class GetInfo method:
            base.GetInfo();
            Console.WriteLine("Employee ID: {0}", id);
        }
    }
}

范例二、

示范如何指定在建立衍生类的执行个体时调用的基底类建构函数。

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            DerivedClass md = new DerivedClass();
            DerivedClass md1 = new DerivedClass(1);
            Console.ReadKey();
        }
    }

    public class BaseClass
    {
        int num;

        public BaseClass()
        {
            Console.WriteLine("in BaseClass()");
        }

        public BaseClass(int i)
        {
            num = i;
            Console.WriteLine("in BaseClass(int i)");
        }

        public int GetNum()
        {
            return num;
        }
    }

    public class DerivedClass : BaseClass
    {
        // This constructor will call BaseClass.BaseClass()
        public DerivedClass() : base()
        {
        }

        // This constructor will call BaseClass.BaseClass(int i)
        public DerivedClass(int i) : base(i)
        {
        }
    }
}