C#中的base()

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中有体现。

posted @   智会超  阅读(585)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示