Bub*_*les 2 c# inheritance compiler-errors c#-4.0
谁能解释为什么编译器会给出以下错误?
namespace Sandbox
{
internal class DataObj { }
public class A
{
protected DataObj _data;
}
}
Run Code Online (Sandbox Code Playgroud)
这是编译器错误.
可访问性不一致:字段类型"Sandbox.DataObj"比字段"Sandbox.A._data"更难访问.
只有当我从一个不同的程序集中派生出来时,我才会期待这个错误.思考?
问题是可以从A不同的组件中获得.这样的类将无法访问属性的返回类型.
因此,声明本身是非法的.
换句话说,此错误发生在声明方,而不是消费方.
这里的基本理念是,创造有时无法使用的东西应该是不可能的.
请注意,这种理念有一些例外; 你可以使用在某些情况下无法使用或继承的泛型做恶行为.
这是允许的,因为将这些错误移到声明方面会限制太多.
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |