鉴于此声明:
using System;
using System.Collections;
using System.Collections.Generic;
namespace AProject.Helpers
{
public static class AClass
{
Run Code Online (Sandbox Code Playgroud)
和这个宣言
namespace AProject.Helpers
{
using System;
using System.Collections;
using System.Collections.Generic;
public static class AClass
{
Run Code Online (Sandbox Code Playgroud)
他们之间有什么区别吗?或者只是编码风格的差异?
我总是习惯于像第一个一样宣布我的课程,但最近注意到微软使用了第二个.
Jon*_*eet 26
在后一版本中,using指令仅适用于名称空间声明.
在大多数情况下,您只有一个名称空间声明:
// Using directives
...
namespace X
{
// Maybe more using directives
// Code
}
// End of file
Run Code Online (Sandbox Code Playgroud)
主要区别在于,如果同一文件中有多个名称空间:
// Using directives
...
namespace X
{
// Maybe more using directives
// Code
}
namespace Y
{
// Maybe more using directives
// Code
}
// End of file
Run Code Online (Sandbox Code Playgroud)
在这种情况下,名称空间X声明中的using指令不会影响名称空间Y声明中的代码,反之亦然.
然而,这并不是唯一的区别 - 有一个微妙的案例,Eric Lippert指出它可以影响代码,即使只有一个命名空间声明.(基本上,如果你写using Foo;的命名空间X声明中,并有一个命名空间X.Foo以及Foo,行为发生变化.这可以通过使用一个命名空间的别名,如加以补救using global::Foo;,如果你真正想要的.)
我个人坚持: