如果我像这样导入命名空间:
using System;
为什么我不能像这样访问子命名空间 IO:
IO.FileInfo fi;
Insted 我必须写一个完整的路径:
System.IO.FileInfo fi;
或者导入整个 IO 命名空间并使用没有命名空间的类
using System.IO;
FileInfo fi;
我是不是漏掉了什么?
最佳答案
虽然根据“命名空间”和“子命名空间”来思考通常很方便,但实际上只有类型名称。
在这种情况下,只有一个类型:System.IO.FileInfo
using 指令允许编译器添加System.
任何类型以查看它是否找到匹配的类型名称。但是,这不会找到 IO.FileInfo
,因为它将寻找 IO
类型,包含 FileInfo
嵌套类型。
语言的设计方式可能看起来更麻烦,但它消除了嵌套类型名称与 namespace 名称的混淆,因为它只在 using 指令中定义的 namespace 中查找类型。这减少了类型命名冲突的可能性。
关于c# - 使用指令导入子命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5070009/