【发布时间】:2013-12-31 14:43:26
【问题描述】:
我刚刚在 .net 中遇到了这个关于继承的基本规则:
CS0060:类类型的直接基类必须至少与类类型本身一样可访问
我很好奇为什么要制定这条规则。
有谁知道为什么首选这种继承? 有没有不同的语言。
// CS0060.cs
class MyClass
// try the following line instead
// public class MyClass
{
}
public class MyClass2 : MyClass // CS0060
{
public static void Main()
{
}
}
谢谢
【问题讨论】:
-
我知道但我的问题是为什么“类类型的基类必须至少与类类型本身一样可访问”?为什么会有这个限制
-
Inconsistent Accessability: Base Class is less accessible than class 的副本。你在
MyClass之前省略了public,所以是internal,和MyClass2的public冲突。 -
这是意料之中的......你不会期望私有类的受保护/公共字段可以通过派生类在外部访问......你会吗??
-
请学习use Google。第二个结果在此处完全显示了您的情况,并明确说明了您收到错误的原因。
-
@CodeCaster:从上下文看“为什么”的意思很清楚:各种因素导致设计团队做出这个决定;这些因素是什么?您的评论只是重申了规则,而没有解释规则的优点。 C# 本来可以设计为像 C++ 那样具有私有继承,但事实并非如此,这是有原因的。这个问题不适合 StackOverflow,不是因为它含糊不清,而是因为它不是关于实际代码的具体技术问题。相反,它是关于那天没有参加设计会议的任何人都不知道的历史。
标签: c# .net language-specifications