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

d11
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())?

塞尔曼·杨(Selman Young)

构造函数仅被调用一次:

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

基本上,如果调用基本构造函数(或类中的另一个构造函数),则在构造函数之前执行该代码。有关更多详细信息,请参见文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在C#中调用基本构造函数

为什么C#中的通用参数没有构造函数与参数的约束?

C#我的析构函数没有被调用?

除非有对非静态成员的引用,否则为什么不调用此C#实例构造函数?

为什么我收到Interface ...没有构造函数(我有Kotlin和Java类)?

为什么在矢量重新分配期间noexcept move构造函数没有被调用?

C ++基本CTOR澄清-为什么未调用赋值/复制构造函数

cpp没有匹配的函数调用来调用构造函数。为什么?

为什么在我的SetInterval中没有调用我的函数?

尽管传递了右值,为什么我的move构造函数没有被调用?

为什么我的Powershell函数无法从C#调用?

C ++:没有匹配的调用函数:为什么需要一个空的构造函数?

为什么当我尝试从C ++调用python函数时为什么出现“没有attirubute错误”

没有调用C ++默认构造函数

为什么在最后一行中也没有调用复制构造函数?

C ++-为什么在没有明显的构造函数匹配时为什么会编译此代码?

当我在OnClientClick中调用Javascript函数时,为什么我的Javascript函数没有被调用

为什么我的函数没有被调用?

为什么我的子类构造函数没有被调用?

为什么我的C#函数没有从Ajax Javascript代码执行?

为什么在这种情况下没有调用最合适的构造函数?

为什么我不能使用参数调用基本构造函数方法?

为什么我的JavaScript函数显然没有被调用?

为什么我的 additionalChoices 构造函数没有被调用?

为什么没有调用 Cups 类的构造函数?

不明白为什么我的函数没有被调用

为什么我的函数操作没有被调用?

为什么我的函数没有在每次迭代中调用?

为什么用户定义的复制构造函数调用基本构造函数,而默认的复制构造函数没有?