在查看一些旧代码时,我发现可以声明一个C#类而不将其放置在命名空间中(在这种情况下,我有一个ASP.NET WebForms应用程序,其中一些Web表单没有声明在任何命名空间中)。
对这样的类执行GetType()
会返回一个类型,其中namespace
属性设置为null
。
我不知道这是允许的——有人能否建议为什么要有一个未声明在命名空间中的类呢?
在查看一些旧代码时,我发现可以声明一个C#类而不将其放置在命名空间中(在这种情况下,我有一个ASP.NET WebForms应用程序,其中一些Web表单没有声明在任何命名空间中)。
对这样的类执行GetType()
会返回一个类型,其中namespace
属性设置为null
。
我不知道这是允许的——有人能否建议为什么要有一个未声明在命名空间中的类呢?
var mscorlib = typeof(string).Assembly.GetTypes()
.Where(t => string.IsNullOrEmpty(t.Namespace)).ToList();
var system = typeof(Uri).Assembly.GetTypes()
.Where(t => string.IsNullOrEmpty(t.Namespace)).ToList();
(但所有私有/编译器生成的)