📜  C#base关键字(1)

📅  最后修改于: 2023-12-03 15:30:16.615000             🧑  作者: Mango

C# base 关键字

在 C# 中,base 关键字表示基类(父类)中的成员访问,用于访问基类中的方法、属性和字段。

使用 base 关键字的场景
  • 调用基类中的构造函数;
  • 访问基类中的属性、方法和字段;
  • 作为参数传递给方法。
调用基类中的构造函数

当创建子类的实例时,子类的构造函数会自动调用父类的无参构造函数。 如果您要调用父类的构造函数,则可以使用以下语法:

class ParentClass
{
    public ParentClass(string message) { }
}

class ChildClass : ParentClass
{
    public ChildClass(string message) : base(message) { }
}

在子类的构造函数中使用 base(message) 调用父类的有参构造函数并传递消息参数。

访问基类中的属性、方法和字段

在子类中,可以使用 base 关键字访问基类的属性、方法和字段,如下所示:

class ParentClass
{
    protected string message = "Hello World";
    public void Display() { Console.WriteLine(message); }
}

class ChildClass : ParentClass
{
    public void DisplayAndChange()
    {
        Console.WriteLine("Before changing: {0}", message); // 访问基类的字段
        base.message = "Hello Universe"; // 修改基类的字段
        base.Display(); //调用基类的方法
    }
}

在子类的方法 DisplayAndChange 中,使用 base.message 来访问基类中的字段,并使用 base.Display() 调用基类的方法。 您也可以通过 base 关键字来访问和修改基类中的属性和方法。

作为参数传递给方法

在 C# 中,您可以将 base 关键字作为参数传递给方法。 以下示例演示了如何使用 base 关键字将子类中的方法传递给基类:

class ParentClass
{
    public void MethodA() { Console.WriteLine("MethodA in ParentClass"); }
    public void MethodB() { Console.WriteLine("MethodB in ParentClass"); }
}

class ChildClass : ParentClass
{
    public new void MethodA() { Console.WriteLine("MethodA in ChildClass"); }

    public void UseMethodB()
    {
        base.MethodB(); // 调用基类的方法
        base.MethodA(); // 需要将子类中的 MethodA 作为参数传递给基类
    }
}

class Program
{
    static void Main(string[] args)
    {
        ChildClass cc = new ChildClass();
        cc.UseMethodB();
    }
}

在子类的方法 UseMethodB 中,我们使用 base.MethodB() 来调用基类的方法,并使用 base.MethodA() 来将子类中的 MethodA 作为参数传递给基类。

总结

在 C# 中,base 关键字用于访问基类中的成员。 您可以使用 base 关键字来调用父类中的构造函数、访问和修改基类的属性、方法和字段,并将子类中的方法作为参数传递给基类中。