我正在尝试使用using
指令以函数方式定义类型,以使代码更具可读性。假设我的example.cs文件如下所示:
using A = System.Tuple<int, int>;
using B = List<A>;
我收到错误:
CS0246找不到类型或命名空间名称“A”(您是否缺少using指令或程序集引用?)
我可以使用using
定义嵌套类型,还是不可能?
答案 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
简而言之,我担心你不能在另一个别名中使用别名。