方法中类名的别名

Yur*_*riy 7 c# alias using class

我有一些卷曲的问题..
我可以在我的文档顶部为类定义别名,例如

using MyName = Bla.Bla.ClassName
Run Code Online (Sandbox Code Playgroud)

但是我可以在方法中定义这样的东西吗?

And*_*odi 7

不,你不能.如果您的意思是要在方法中定义类别名,则无法做到这一点.

别名只能在文件或命名空间级别定义:

using MyName = Bla.Bla.ClassName;
namespace A{
...
}
Run Code Online (Sandbox Code Playgroud)

要么

namespace A{
    using MyName = Bla.Bla.ClassName
...
}
Run Code Online (Sandbox Code Playgroud)

如果您想要定义"方法别名",则这也是不可能的:别名仅适用于类型或命名空间.


Jon*_*eet 5

不,using指令必须在任何声明之外,或在命名空间声明中:

using Foo;
namespace Bar
{
   using Baz;
}
Run Code Online (Sandbox Code Playgroud)

你不能在一个方法中做到这一点.为什么不为全班做这件事呢?为什么你希望它在特定方法中应用?

  • 我有两个类型参数的通用(Either monad).我的方法有几个不同的返回分支,每个返回分支返回一个"new Either <x,y>(z)".Either的内部值是只读的,因此如果没有别名,每次我想引用此类型时都必须输入"Either <x,y>".参数类型"x"和"y"取决于我所处的方法,并且通常具有长名称; 在某些情况下,"Either <x,y>"占用超过60个字符.在方法开始时,使用"使用任一个<x,y>"然后"返回new(z)"以减少混乱将是有用的. (3认同)