gpt4 book ai didi

c# - 为什么我的 C# 基本构造函数没有被调用?

转载 作者:行者123 更新时间:2023-12-02 16:01:22 25 4
gpt4 key购买 nike

public class Animal
{
public Animal()
{
"animal ctor".Dump();
}
}

public class Cat :Animal
{
public Cat():this("gray")
{
"cat ctor".Dump();
}

public Cat(string c):base()
{
"cat ctor2".Dump();
}
}

void Main()
{
Cat a = new Cat();
}

代码的输出是:

animal ctor
cat ctor2
cat ctor

我理解第一行。

首先调用 Animal Ctor,然后 Cat ctor 调用字符串重载 public Cat(string c):base() - 但这也会调用 base 的构造函数。

那么为什么我再也看不到animal ctor (:base())?

最佳答案

构造函数仅被调用一次:

  1. 您的 Cat() 构造函数调用 Cat(string c)
  2. Cat(string c) 正在调用 base 构造函数
  3. 执行基本构造函数
  4. Cat(string c) 被执行(base 的调用者)
  5. 然后执行 Cat() 构造函数

基本上,如果您调用base构造函数(或类中的另一个构造函数),它将在您的构造函数之前执行。请参阅 documentation了解更多详情

关于c# - 为什么我的 C# 基本构造函数没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24413192/

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