gpt4 book ai didi

c# - 这两个声明有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 17:28:31 24 4
gpt4 key购买 nike

鉴于此声明:

using System;
using System.Collections;
using System.Collections.Generic;

namespace AProject.Helpers
{
public static class AClass
{

和这个声明

namespace AProject.Helpers
{
using System;
using System.Collections;
using System.Collections.Generic;

public static class AClass
{

它们之间有什么区别吗?或者只是编码风格的不同?

我总是像第一个一样声明我的类,但最近注意到 Microsoft uses the second .

最佳答案

在后一个版本中,using 指令仅适用于命名空间声明。

在大多数情况下,您只会有一个命名空间声明:

// Using directives
...
namespace X
{
// Maybe more using directives
// Code
}
// End of file

主要区别是如果您在同一个文件中有多个命名空间:

// Using directives
...
namespace X
{
// Maybe more using directives
// Code
}

namespace Y
{
// Maybe more using directives
// Code
}
// End of file

在这种情况下,命名空间 X 声明中的 using 指令不会影响命名空间 Y 声明中的代码,反之亦然。

然而,这不是唯一的区别 - 还有一个 subtle case which Eric Lippert points out即使只有一个命名空间声明,它也会影响代码。 (基本上,如果你在命名空间 X 声明中编写 using Foo;,并且有一个命名空间 X.Foo 以及 Foo,行为会改变. 这可以使用命名空间别名来补救,例如 using global::Foo; 如果你真的想要的话。)

就我个人而言,我会坚持:

  • 每个文件一个命名空间声明(通常每个文件一个顶级类型)
  • 在命名空间声明之外使用指令

关于c# - 这两个声明有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/954467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com