2016-08-15 80 views
1

我阅读C#规范并为其搜索,但没有发现任何内容。C#单元(文件范围)名称空间

我99%确定没有像C#中的单位命名空间指令这样的功能,但问题是:为什么?有地道或技术原因吗?

这很方便,特别是当我们的大部分文件由单个命名空间组成时。 是否有任何功能要求或建议?也许我们可以做一个?

// with unit namespace 
namespace Foo; 
class Bar { ... } // Class Bar declared inside Foo Namespace 
struct Baz { ... } // Baz is inside Foo too 

// without 
namespace Foo { 
    class Bar { ... } 
    class Baz { ... } 
} 

或者也许有办法重新导出全局符号? 我的意思是首先声明global命名空间中的所有内容,然后 在选定的命名空间中发布公共符号?

C#代码的深层嵌套对我来说是最烦人的事情之一。

我真的很享受C++能够转发声明甚至嵌套类,然后定义它们,甚至不需要额外的嵌套级别。

谢谢你的时间。

+0

您不应该使用全局名称空间。 – SLaks

+0

看到“你永远不应该”是不愉快的。至少我想知道为什么全局命名空间被添加到语言中。可能有一些有趣的原因并不明显,至少对我而言。我想知道这些原因,当然如果你有答案,你可以提供这些信息。 –

回答

1

从逻辑上说,命名空间与块类似,只是它们只能包含类型而不是成员。

拥有这种块的特殊语法将是毫无意义和令人困惑的。

+0

我认为它对我很有用,所以它对我来说并不毫无意义。另外,我确实认为单元名称空间是一些易于理解的东西。它看起来像Go package'声明或PHP命名空间指令。如果我没有记错的话,perl6也有。重点是:有些人认为它很有用。 –

+0

您可以在GitHub上提交功能请求。但是,由于不值得这样做,它很可能会被拒绝。不过,看看他们是否给出其他原因会很有趣。 – SLaks