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

How to remove curly braces from a namespace

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

实际上:

namespace ProductsGroup{
  public void save{
  }
}

我需要:

namespace ProductsGroup;
  public void save{
  }

除非您使用 file-scoped namespaces 针对 C# 10 进行编译,否则您无法执行此操作。 (加粗)

A namespace_declaration consists of the keyword namespace, followed by a namespace name and body, optionally followed by a semicolon

正文需要花括号。

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/namespaces

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{
  }
}

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

可以使用顶级函数,但不能与命名空间一起使用(所有顶级函数都以 class 结尾,根据文件名在根命名空间中命名)。

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

namespace MyNamename {
  public class MyClass {
    public Task MyAsync() {
      // ...
    }
  }
}

to/from

namespace MyNamename;
public class MyClass {
  public Task MyAsync() {
    // ...
  }
}