moh*_*eeh -1 .net c# language-specifications
我刚刚在.net中遇到了关于继承的这个基本规则:
CS0060:类类型的直接基类必须至少与类类型本身一样可访问
我很好奇为什么要制定这条规则.
有谁知道为什么这种继承是首选?是否有任何语言以不同的方式执行.
// CS0060.cs
class MyClass
// try the following line instead
// public class MyClass
{
}
public class MyClass2 : MyClass // CS0060
{
public static void Main()
{
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我很好奇为什么要制定这条规则.有谁知道为什么这种继承是首选?是否有任何语言以不同的方式进行?
第二个问题比第一个问题更容易回答.是的,其他语言的表现不同.特别是,C++允许" 私有继承 "; 也就是说,继承关系成为类的私有实现细节.如果C#具有私有继承,那么显然基类可能比派生类更难访问.但是C#没有私有继承.
第一个问题很难回答,因为"为什么"问题本质上不适合Stack Overflow.唯一正确的答案是"为什么这条规则得到了发展?" 是因为语言设计委员会在给出许多竞争性设计目标时决定这是最好的妥协".
这可能不是一个令人满意的答案.正确回答这个问题不仅涉及列出所有这些设计目标及其相对优点,还涉及在做出决定时描述设计团队中每个成员的心理状态,并且还描述了各种冲突的过程.出现了解决了.这个决定是在十三年前做出的,所以这条路线确实很冷.
十三年前那天我不在那个房间,但我可以让你知道设计委员会在决定是否允许私人继承时会考虑的因素:
由于我没有三四个小时的时间,我需要为这个功能写出所有这些因素的详细分析,然后尝试追溯精神分析设计团队,我想你会有与你的好奇心生活在一起.
我建议将来不要在StackOverflow上提出这样的问题.尝试坚持有关具有精确答案的实际代码的特定技术问题.
| 归档时间: |
|
| 查看次数: |
581 次 |
| 最近记录: |