如何范围代码块?

4th*_*ace 3 .net c# enums

如果我需要显式引用命名空间以避免与另一个命名空间冲突,那么当您需要在一个代码块中多次引用它时,如何才能完成?

例如:

List<NamespaceA.SomeEnum> myobject = new List<NamespaceA.SomeEnum>()
{
  NamespaceA.SomeEnum.A,
  NamespaceA.SomeEnum.B,
  NamespaceA.SomeEnum.C,
  NamespaceA.SomeEnum.D,
  NamespaceA.SomeEnum.E,
}
Run Code Online (Sandbox Code Playgroud)

有没有办法NamespaceA.SomeEnum在参数引用中快捷/暗示?

Tob*_*ndt 5

你可以做

using ASomeEnum = NamespaceA.SomeEnum;
Run Code Online (Sandbox Code Playgroud)

然后

List<ASomeEnum> myobject = new List<ASomeEnum>()
{
    ASomeEnum.A,
    ASomeEnum.B,
    ASomeEnum.C,
    ASomeEnum.D,
    ASomeEnum.E,
}
Run Code Online (Sandbox Code Playgroud)

using指令需要位于顶级或命名空间内,但不能位于类型中.


另一种选择是将包含违规代码块的方法移动到另一个文件并使该类成为局部.

这允许您在另一个文件中使用不同的命名空间.

  • 虽然技术上可行,但"使用别名"非常臭.现在代码维护者必须记住两个名字.当他们在另一个没有相同别名的代码文件中使用该枚举时,他们将获得错误.使用完全限定名称要好得多. (2认同)