使用嵌套类型定义的指令

时间:2017-09-01 08:55:11

标签: c# using-directives

我正在尝试使用using指令以函数方式定义类型,以使代码更具可读性。假设我的example.cs文件如下所示:

using A = System.Tuple<int, int>;
using B = List<A>;

我收到错误:

  

CS0246找不到类型或命名空间名称“A”(您是否缺少using指令或程序集引用?)

我可以使用using定义嵌套类型,还是不可能?

1 个答案:

答案 0 :(得分:4)

docs.microsoft.com上的C#语言规范有一个涵盖Using directive的部分,特别是您尝试使用的using指令的类型是“Using alias directive”:

  

using_alias_directive(使用别名指令)引入了名称空间或类型的别名。

文档重点介绍了using_alias_directive的允许结构:

using_alias_directive
    : 'using' identifier '=' namespace_or_type_name ';'
    ;

请注意,这只允许使用“namespace_or_type_name”,但不允许使用另一个“using_alias_directive”。其中一个可能的原因,可以在文档中找到它(强调我的):

  

using_alias_directives的写入顺序没有意义,using_alias_directive引用的namespace_or_type_name的解析不受using_alias_directive本身或直接包含的编译单元或命名空间体中的其他using_directives的影响。 换句话说,using_alias_directive的namespace_or_type_name被解析为好像直接包含编译单元或命名空间体没有using_directives

简而言之,我担心你不能在另一个别名中使用别名。