在C#中嵌套别名

qua*_*ana 10 c# alias typedef

我已经typedef在C#中看到了很多问题的答案,我已经使用了,所以我有:

using Foo = System.Collections.Generic.Queue<Bar>;
Run Code Online (Sandbox Code Playgroud)

这很有效.我可以更改定义(尤其是更改Bar => Zoo等)以及使用Foo更改的所有内容.大.

现在我想要这个工作:

using Foo = System.Collections.Generic.Queue<Bar>;
using FooMap = System.Collections.Generic.Dictionary<char, Foo>;
Run Code Online (Sandbox Code Playgroud)

但是C#似乎并不喜欢Foo第二行,即使我已经在第一行中定义了它.

有没有办法使用现有的别名作为另一个的一部分?

编辑:我正在使用VS2008

Dav*_*ave 15

根据标准看起来答案是否定的.从第16.3.1节第6段:

1 using-alias-directives的写入顺序没有意义,using-alias-directive引用的namespace-or-type-name的解析不受using-alias-directive本身或其他使用的影响立即包含编译单元或命名空间体中的-directives.

2换句话说,using-alias-directive的namespace-or-type-name被解析,就像直接包含编译单元或命名空间体没有using-directives一样.

编辑:

我只是注意到上面链接的版本有点过时了.第4版中相应段落的文本更详细,但仍禁止在其他段落中使用别名进行引用.它还包含一个显示它的示例.

根据您对作弊的需求和打字的强度,您可以通过以下方式逃脱:

class Foo : System.Collections.Generic.Queue<Bar>
{
}
Run Code Online (Sandbox Code Playgroud)