gpt4 book ai didi

c# - 会自动调用基类构造函数吗?

转载 作者:IT王子 更新时间:2023-10-29 03:36:46 32 4
gpt4 key购买 nike

class Person
{
public int age;
public Person()
{
age = 1;
}
}

class Customer : Person
{
public Customer()
{
age += 1;
}
}

Customer customer = new Customer();

顾客的年龄是 2 岁吗?似乎无论如何都会调用基类的构造函数。如果是这样,为什么我们有时需要在最后调用 base

public Customer() : base()
{
.............
}

最佳答案

这就是 C# 的工作方式。类型层次结构中每个类型的构造函数将按照最基础 -> 最派生的顺序调用。

因此在您的特定实例中,它调用 Person(),然后在构造函数订单中调用 Customer()。有时需要使用 base 构造函数的原因是当前类型下的构造函数需要额外的参数。例如:

public class Base
{
public int SomeNumber { get; set; }

public Base(int someNumber)
{
SomeNumber = someNumber;
}
}

public class AlwaysThreeDerived : Base
{
public AlwaysThreeDerived()
: base(3)
{
}
}

为了构造一个AlwaysThreeDerived 对象,它有一个无参数的构造函数。但是,Base 类型没有。因此,为了创建一个无参数构造函数,您需要为基本构造函数提供一个参数,您可以使用 base 实现。

关于c# - 会自动调用基类构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13166019/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com