为啥我不能在 C# 中使用基本构造函数 [重复]

Posted

技术标签:

【中文标题】为啥我不能在 C# 中使用基本构造函数 [重复]【英文标题】:Why cant i use base constructor in c# [duplicate]为什么我不能在 C# 中使用基本构造函数 [重复] 【发布时间】:2021-10-13 11:54:51 【问题描述】:

假设我们有两个类

class baseClass

    public baseClass()
    

    
    public baseClass(int value)
    

    


class derivedClass



有没有办法从derivedClass 调用参数化构造函数

derivedClass instance = new derivedClass(1)

没有在 derivedClass 中实现构造函数,该构造函数调用 base(value)

【问题讨论】:

这能回答你的问题吗? Calling base constructor in C# 和 Will the base class constructor be automatically called? "...没有在 derivedClass 中实现构造函数..." 不。为了将参数传递给构造函数,您需要创建一个构造函数。 如果有这些参数的自动传递,那么你需要特殊的语法来防止当你不想要它时。 【参考方案1】:

你在寻找类似的东西

   class BaseClass
   
      public BaseClass()
      

      
      public BaseClass(int value)
      

      
   

   class DerivedClass : BaseClass
   
      public DerivedClass(int value) : base(value)
      

      
   

这允许您调用:

DerivedClass test = new DerivedClass(2);

【讨论】:

我知道这种解决方案,但我想知道是否有任何解决方案我不需要这部分:public DerivedClass(int value) : base(value) 在任何派生类中 @NeoPrince 不,你必须在子类中定义你想要的构造函数来传播你想要的东西。以geeksforgeeks.org/c-sharp-inheritance-in-constructors 和C# MSDoc 为例 OP 说,without implmenting a constructor in derivedClass... 这正好相反。 除非您在派生构造函数之一中调用 base(value),否则我认为您不能。 BaseClass 构造函数无法定义 DerivedClass 实例。

以上是关于为啥我不能在 C# 中使用基本构造函数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥并不总是有默认构造函数[重复]

unity c#怎么调用析构函数

析构函数为啥能释放对象内存?

在 C# 中调用基本构造函数 [重复]

如何调用析构函数[重复]

C语言里面构造函数和析构函数的运用办法