在浏览一些遗留代码时,我发现您可以声明一个C#类而不将其放在命名空间中(在这种情况下,我有一个ASP.NET WebForms应用程序,并且某些Web表单未在任何命名空间中声明).
甲GetType()这样的类返回,其中一个类型namespace属性设置为null.
我不知道这是允许的 - 有人可以建议为什么有一个未在命名空间中声明的类是可取的吗?
这当然不是很好的做法.它确实使一些例子更容易,比如"你好世界" - 也许C#设计师正在寻找代码高尔夫; p
但是,是的,这很奇怪.我不知道我们需要能够直接使用全局命名空间的任何响亮的原因.即使对于扩展方法,我宁愿添加一个using指令来引入它们......
有趣的是 - 似乎有40多个这样的mscorlib.dll和20多个system.dll
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();
Run Code Online (Sandbox Code Playgroud)
(但是所有私有/编译器生成的)
| 归档时间: |
|
| 查看次数: |
579 次 |
| 最近记录: |