gpt4 book ai didi

c# - 包含时的命名空间、程序集和继承层次结构

转载 作者:行者123 更新时间:2023-12-04 16:58:45 24 4
gpt4 key购买 nike

通常在将命名空间或程序集包含到我的代码中时,我经常遇到奇怪的情况,即命名空间是从另一个命名空间继承的,但父命名空间中的类不可用。例如,当使用 List<> 时或 Dictionary<> ,我用的是System.Collections.Generic命名空间。但是,如果我还想使用 IEnumerator ,我还必须包括 System.Collections命名空间。不应该System.Collections已被 System.Collections.Generic 的任何成员引用,因为它是一个 child ?两个命名空间还共享相同的程序集 mscorlib.dll。

为什么在子命名空间中不包含父命名空间?

最佳答案

Shouldn't System.Collections already be referenced by any member of System.Collections.Generic, as it is a child?



不。命名空间之间没有继承。 A using指令仅从该 namespace 导入类型 - 它不会从以给定 namespace 开头的 namespace 或包含在给定 namespace 名称中的 namespace 导入类型。

例如,之后:
using System.Collections;

... 这不允许您使用 List<T>作为 System.Collections.Generic.List<T> 的简单名称,也不允许您使用 Guid作为 System.Guid 的简单名称.

唯一的异常(exception)是,如果您在 X.Y.Z 的命名空间声明中编写代码。 , 隐式导入命名空间 X.YX (当然还有 X.Y.Z )。 (在那个例子中, X.Y 是封闭的命名空间 if X.Y.Z ,但它不是继承关系。)

关于c# - 包含时的命名空间、程序集和继承层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23613887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com