为啥我不能在 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# 中使用基本构造函数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章