【发布时间】:2015-10-04 18:13:38
【问题描述】:
请注意,我不会问如何做某事。这个问题是关于语言作者的设计决策。
假设你有一个带有构造函数和方法的基类:
public class BaseClass
{
public BaseClass(string argument)
{
}
public void SomeMethod()
{
}
}
你还有一个空的派生类(或者,实际上,有其他不相关的东西):
public class DerivedClass : BaseClass
{
public DerivedClass() // Some other constructor not used in the example, just so it will compile
}
所以,当你尝试在派生类的实例上调用方法时,它会起作用,但如果你尝试调用构造函数,则会导致编译错误:
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 删除的免责声明。从第一个(已经删除的)答案来看,免责声明是非常必要的。
标签: c# constructor language-design