为什么';tc#允许使用父项';默认情况下是谁的构造函数?

为什么';tc#允许使用父项';默认情况下是谁的构造函数?,c#,constructor,language-design,C#,Constructor,Language Design,请注意,我不是问如何做某事。这个问题是关于语言作者的设计决策 假设您有一个带构造函数的基类和一个方法: public class BaseClass { public BaseClass(string argument) { } public void SomeMethod() { } } 还有一个派生类是空的(或者,实际上,有其他不相关的东西): 因此,当您尝试在派生类的实例上调用该方法时,该方法会起作用,但如果您尝试调用构造函数,则会导致编

请注意,我不是问如何做某事。这个问题是关于语言作者的设计决策

假设您有一个带构造函数的基类和一个方法:

public class BaseClass
{
    public BaseClass(string argument)
    {
    }

    public void SomeMethod()
    {
    }
}
还有一个派生类是空的(或者,实际上,有其他不相关的东西):

因此,当您尝试在派生类的实例上调用该方法时,该方法会起作用,但如果您尝试调用构造函数,则会导致编译错误:

var d = new DerivedClass("argument"); // error CS1729: The type `DerivedClass' does not contain a constructor that takes `1' arguments
d.SomeMethod(); // Works OK

这种语言设计决策背后的原因是什么?

这是因为构造函数不是继承的


有关更多信息,请参阅本文以了解其原因:

这是因为构造函数不是继承的


有关更多信息,请参阅本文以了解其原因:

这是因为构造函数不是继承的


有关更多信息,请参阅本文以了解其原因:

这是因为构造函数不是继承的



有关更多信息,请参阅本文以了解原因的解释:

您的类定义无效并将引发错误CS1729:类型BaseClass不包含接受0个参数的构造函数。DerivedClass继承BaseClass,但它有自己的构造函数。显然,这会让您恼火。或者也许他们在周一写下了规范的这一部分。或者可能是因为金枪鱼。请将此问题标记为与网络或服务器相关的人阅读此问题?还原了@Jashaszun删除的免责声明。从第一个(已删除)答案判断,免责声明是非常必要的。您的类定义无效,并将引发错误CS1729:类型BaseClass不包含接受0个参数的构造函数。DerivedClass继承BaseClass,但它有自己的构造函数。显然是为了让您恼火。或者也许他们在周一写下了规范的这一部分。或者可能是因为金枪鱼。请将此问题标记为与网络或服务器相关的人阅读此问题?还原了@Jashaszun删除的免责声明。从第一个(已删除)答案判断,免责声明是非常必要的。您的类定义无效,并将引发错误CS1729:类型BaseClass不包含接受0个参数的构造函数。DerivedClass继承BaseClass,但它有自己的构造函数。显然是为了让您恼火。或者也许他们在周一写下了规范的这一部分。或者可能是因为金枪鱼。请将此问题标记为与网络或服务器相关的人阅读此问题?还原了@Jashaszun删除的免责声明。从第一个(已删除)答案判断,免责声明是非常必要的。您的类定义无效,并将引发错误CS1729:类型BaseClass不包含接受0个参数的构造函数。DerivedClass继承BaseClass,但它有自己的构造函数。显然是为了让您恼火。或者也许他们在周一写下了规范的这一部分。或者可能是因为金枪鱼。请将此问题标记为与网络或服务器相关的人阅读此问题?还原了@Jashaszun删除的免责声明。从第一个(已经删除的)答案来看,免责声明是非常必要的。因此,这个问题本质上是重复的。应该找得更好。谢谢,这个问题基本上是重复的。应该找得更好。谢谢,这个问题基本上是重复的。应该找得更好。谢谢,这个问题基本上是重复的。应该找得更好。谢谢
var d = new DerivedClass("argument"); // error CS1729: The type `DerivedClass' does not contain a constructor that takes `1' arguments
d.SomeMethod(); // Works OK