Base有两种使用方式。
- 带功能的底座
- 以变量为基础。
带功能的底座
当base与函数一起使用时,它的目的是在父类被子类继承时带参数调用父类。我将用一个例子来解释。
- 在以下示例中,控制台打印..
参数为 1,这是子构造函数
- 现在,如果您删除了基础(参数),那么控制台将打印..
这是父构造函数,这是子构造函数
当您从子类实例化对象时,一旦实例化,就会调用构造函数。当您从子类继承父类时,父类和子类中的构造函数都会被调用,因为它们都被实例化了。使用 base() 时,您直接调用父类中的构造函数。所以如果说base(),表示父类中的构造函数没有任何参数,当使用base(parameter)时,表示父类中的构造函数有参数。这是一种函数重载。base() 括号内使用的参数变量的类型由与 base 一起使用的函数的参数列表定义(在以下实例中,它是 child(int parameter))
using System;
class Parent
{
public Parent()
{
Console.WriteLine("This is Parent Constructor");
}
public Parent(int parameter)
{
Console.WriteLine("parameter is " + parameter);
}
}
class Child : Parent
{
public Child(int parameter): base(parameter)
{
Console.WriteLine("This is child constructor");
}
}
class Program
{
static void Main(string[] args)
{
Child childObject = new Child(1);
}
}
演示
https://repl.it/@donqq/baseKeyword#main.cs
以变量为基础。
- 在以下示例中,控制台打印..
父母,孩子。
在下面的例子中,如果使用 base 关键字,则表示您对子类继承的父类的地址。如果您使用它,您将寻址到类本身,这意味着您实例化子类时的子类,从而调用其构造函数。因此,当您使用 base.value 时,表示您引用了父类中的变量,而当您引用 this.value 时,表示您引用了子类中的变量。您可以区分您使用此基础引用的变量,当两者具有相同名称时,此关键字。请记住,您不能在函数之外的类中使用 base、this 关键字。您必须在函数内部使用它们来引用在全局级别初始化的变量。您也不能使用它们来引用在函数内部初始化的局部变量。
using System;
class Parent
{
public string value = "Parent";
}
class Child : Parent
{
public string value = "Child";
public Child() {
Console.WriteLine(base.value);
Console.WriteLine(this.value);
}
}
class Program
{
static void Main(string[] args)
{
Child childObject = new Child();
}
}
演示
https://repl.it/@donqq/Base-Class