C#中的關(guān)鍵字之:base、this

字號:

C# 中的關(guān)鍵字之:base、this。base 關(guān)鍵字用于從派生類中訪問基類的成員:調(diào)用基類上已被其他方法重寫的方法。
    指定創(chuàng)建派生類實(shí)例時(shí)應(yīng)調(diào)用的基類構(gòu)造函數(shù)。
    基類訪問只能在構(gòu)造函數(shù)、實(shí)例方法或?qū)嵗龑傩栽L問器中進(jìn)行。
    示例:
    在派生類中調(diào)用基類方法。
    以下是引用片段:
    // base 關(guān)鍵字
    // 訪問基類成員
    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}");
    //調(diào)用基類方法
    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
    */
    在派生類中調(diào)用基類構(gòu)造函數(shù)。
    以下是引用片段:
    // 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
    {
    // 該構(gòu)造器調(diào)用 BaseClass.BaseClass()
    public DerivedClass() : base()
    {
    }
    // 該構(gòu)造器調(diào)用 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)
    */
    注意點(diǎn):
    從靜態(tài)方法中使用 base 關(guān)鍵字是錯(cuò)誤的。
    base 主要用于面向?qū)ο箝_發(fā)的對態(tài)這方面,在示例2中有體現(xiàn)。
    this 關(guān)鍵字引用類的當(dāng)前實(shí)例。