C# - 命名空间中的类型声明

Sof*_*eek 4 c# delegates types namespaces declaration

什么可能是在命名空间中声明类型但不在类中声明类型的可能用法.

例如:

namespace Test
{
    public delegate void Ispossible();
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,不会产生任何编译错误,但我想不出为什么我们会这样声明它而不是在类中.

STW*_*STW 6

命名空间是.NET中的高级组织单位.

类中声明类型通常是不受欢迎的(但是,与所有事情一样,它不是100%规则)因为它可以使类型更紧密地耦合并且更难以找到.

VB.NET模块有点例外(编辑:它们实际上更像是编译器技巧/语法 - 糖),但通常.NET生态系统中的所有内容都包含在命名空间中.

你的例子有助于重用; 如果它在一个类中,则意味着委托只应该由该类使用,并且可能导致不必要地引入重复的委托.


更新:当只使用少数几种类型时,命名空间似乎没什么用处,但如果没有它们,任何规模的项目都将是组织上的灾难.想象一下没有名称空间的.NET框架,一个(可能是过时的)计数将框架置于3500类型.

命名空间就像文档的文件夹或抽屉; 一些松散的文件很容易管理,但如果你有很多页面,那么找到你需要的那些页面就会变得很痛苦.

给文档一个读取,它很短并且不是非常复杂(也不是命名空间)但是有两个不错的点MSDN - 命名空间(c#)