gpt4 book ai didi

c# - C#中命名空间的使用

转载 作者:IT王子 更新时间:2023-10-29 04:36:49 25 4
gpt4 key购买 nike

我想知道,C# 和其他编程语言中命名空间的用途是什么......

据我所知,它们用于两件事:

  • 将项目组织成有意义的部分
  • 区分同名类

我的问题是:使用 namespace 时是否还有其他需要考虑的事项?它们对性能或类似的东西有影响吗?

最佳答案

As far as I know, they are used for two things:

• To structure the project into meaningful pieces

• To distinguish classes with the same name

基本上就是这样。我要补充您的第一点,即命名空间提供的结构大于项目的结构,因为命名空间可能跨越项目和程序集。我想补充你的第二点,命名空间的主要目的是为库添加结构以便更容易找到你需要的东西并避免你不需要的东西 .也就是说,命名空间的存在是为了方便库的用户,而不是为了它的创建者。

次要 目的是消除名称冲突的歧义。名称冲突在实践中非常罕见。 (如果命名空间的主要目的是消除冲突的歧义,那么可以想象基类库中的命名空间会少很多!)

Are there any other things to consider when using namespaces?

是的。命名空间的正确使用有很多方面。例如:

  • 违反标准命名约定可能会造成混淆。特别是,不要将类命名为与其 namespace 相同的名称! (有关详细信息,请参阅下面的链接。)
  • 使用命名空间可以使扩展方法发挥你意想不到的作用;小心
  • 在存在名称冲突的世界中,“using”指令的准确位置可以巧妙地改变解析规则;这些情况很少见,但一旦出现就会令人困惑
  • 冲突通常发生在机器生成的代码与人类生成的代码交互的情况下;在这种情况下要小心,特别是如果您是编写代码生成器的人。非常防御;您不知道编写人为生成的一半的人会造成什么疯狂的名字冲突。

有关此主题的更多详细信息,请参阅我的文章:

http://blogs.msdn.com/b/ericlippert/archive/tags/namespaces/

另请参阅框架设计指南,了解有关命名空间使用的正确和不正确约定的更多想法。

Do they have an impact on performance or something like that?

几乎没有。命名空间是 C# 语言的虚构;底层类型系统没有“命名空间”。当你说

using System;
...
class MyException : Exception
...

没有名为“Exception”的类。类名是“System.Exception”——名称中有句点。 CLR、反射和 C# 语言共同使您相信该类名为“Exception”并且位于命名空间“System”中,但一旦您进入幕后,就真的没有命名空间这样的野兽了。这只是一个约定,您有时可以省略“系统”。来自名称“System.Exception”。

关于c# - C#中命名空间的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5915033/

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