我想知道,C#和其他编程语言中命名空间的目的是什么......
据我所知,它们用于两件事:
我的问题是:使用命名空间时还有其他需要考虑的事项吗?它们对性能或类似的影响有影响吗?
Eri*_*ert 44
据我所知,它们用于两件事:
•将项目构建为有意义的部分
•区分具有相同名称的类
基本上就是这样.我想补充一点,命名空间提供的结构大于项目的结构,因为命名空间可能跨越项目和程序集.我想补充一点,命名空间的主要目的是为库添加结构,以便更容易找到所需的东西并避免不需要的东西.也就是说,名称空间对于库的用户来说是方便的,而不是为了方便其创建者.
一个次要目的是消除歧义的名称冲突.名称冲突在实践中非常罕见.(如果命名空间的主要目的是消除冲突的歧义,那么可以想象基类库中的命名空间会少得多!)
使用命名空间时还有其他需要考虑的事项吗?
是.有许多方面可以纠正名称空间的使用.例如:
有关详细信息,请参阅我关于此主题的文章:
http://blogs.msdn.com/b/ericlippert/archive/tags/namespaces/
另请参阅框架设计指南,以了解有关命名空间使用的正确和错误约定的更多想法.
它们对性能或类似的影响有影响吗?
几乎从不.命名空间是C#语言的虚构; 底层类型系统没有"名称空间".当你说
using System;
...
class MyException : Exception
...
Run Code Online (Sandbox Code Playgroud)
没有名为"Exception"的类.类名是"System.Exception" - 名称中有一个句点.CLR,反射和C#语言都让你相信这个类被命名为"Exception"并且它位于名称空间"System"中,但是一旦你进入幕后,真的没有这样的野兽作为命名空间.这只是一个惯例,你有时可以省略"系统".从名称"System.Exception".
| 归档时间: |
|
| 查看次数: |
27833 次 |
| 最近记录: |