如何从命名空间中删除花括号

Tom*_*Tom 8 c# .net-6.0

我想知道如何从命名空间中删除大括号并用分号 (;) 关闭它。

实际上:

namespace ProductsGroup{
  public void save{
  }
}
Run Code Online (Sandbox Code Playgroud)

我需要:

namespace ProductsGroup;
  public void save{
  }
Run Code Online (Sandbox Code Playgroud)

Ric*_*ard 12

Visual-Studio 2022 已经提供了这种重构(以及相反的功能)。

此外,您还可以在 Visual Studio 的 C# 代码样式设置和.editorconfig.

更多详细信息:https://www.ilkayilknur.com/how-to-convert-block-scoped-namespacees-to-file-scoped-namespaces

更新以上假设代码有效

在你的问题中:

namespace ProductsGroup{
  public void save{
  }
}
Run Code Online (Sandbox Code Playgroud)

在任何版本的 C# 中都无效

可以使用顶级函数,但不能与命名空间一起使用(所有顶级函数最终都在根命名空间中的一个类中,根据文件名命名)。

否则你需要一个类型。所以你可以重构:

namespace MyNamename {
  public class MyClass {
    public Task MyAsync() {
      // ...
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

至/自

namespace MyNamename;
public class MyClass {
  public Task MyAsync() {
    // ...
  }
}
Run Code Online (Sandbox Code Playgroud)

  • OP还尝试使用非类作用域函数,这是不允许的,并且可能是他们问题的一部分 (2认同)