Lia*_*roy 0 c# inheritance assemblies namespaces class-hierarchy
通常,当在我的代码中包含名称空间或程序集时,我经常会遇到奇怪的情况,即名称空间是从另一个名称空间继承而来的,而父名称空间的类却不可用。例如,当使用List<>或时Dictionary<>,我使用System.Collections.Generic名称空间。但是,如果我也想使用IEnumerator,则还必须包括System.Collections名称空间。不应该System.Collections已经被任何成员引用System.Collections.Generic,因为它是一个孩子?两个名称空间还共享同一程序集mscorlib.dll。
为什么当子级不包含父级名称空间?
System.Collections.Generic的任何成员都应该已经引用了System.Collections,因为它是子级的吗?
不。名称空间之间没有继承。一个using指令只从命名空间进口类型-它从命名空间不导入类型开始与给定的命名空间包含给定命名空间的名称中,或命名空间。
例如,之后:
using System.Collections;
Run Code Online (Sandbox Code Playgroud)
...既不允许您将其List<T>用作简单名称System.Collections.Generic.List<T>,也不允许您将其Guid用作简单名称System.Guid。
该唯一的例外是,如果你的命名空间声明中正在编写代码X.Y.Z,隐含进口的命名空间X.Y和X(以及X.Y.Z,当然)。(在这个例子中,X.Y是封闭的命名空间,如果X.Y.Z,但它不是继承关系)。
| 归档时间: |
|
| 查看次数: |
249 次 |
| 最近记录: |