首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型别名可以用来定义类型别名吗?

类型别名可以用来定义类型别名吗?
EN

Stack Overflow用户
提问于 2020-04-10 11:26:43
回答 2查看 183关注 0票数 1

我试图通过使用另一个类型别名来定义类型别名,如下所示:

代码语言:javascript
复制
using pairs = Dictionary<string, int>;
using allPairs = Dictionary<string, pairs>;

并得到以下错误消息:

代码语言:javascript
复制
error CS0246: The type or namespace name 'pairs' could not be found (are you missing a using directive or an assembly reference?

为什么这是一个错误,并有一个解决办法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-10 12:28:13

不能在using指令的声明中使用使用别名。根据c#规范的说法,

using_alias_directives的写入顺序没有意义,由using_alias_directive引用的namespace_or_type_name的分辨率不受using_alias_directive本身或立即包含编译单元或命名空间主体中的其他using_directives的影响。

换句话说,编译器在给定的声明空间内隔离地处理每个using alias directives。在同一声明空间内进行这种孤立处理的结果,导致不知道给定声明空间中存在其他alias。因此,当您在另一个alias中引用using directive时,编译器对引用别名的存在一无所知。

代码语言:javascript
复制
using pairs = Dictionary<string, int>;
using allPairs = Dictionary<string, pairs>;

在上述代码中,第二行将导致编译时错误,因为它不受第一个使用别名指令的影响。

票数 0
EN

Stack Overflow用户

发布于 2020-04-10 11:40:20

其实没有。使用别名指令不使用源代码文件中的使用指令来解析类型,有关更多信息,请参考https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs0246

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61139309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档