我试图通过使用另一个类型别名来定义类型别名,如下所示:
using pairs = Dictionary<string, int>;
using allPairs = Dictionary<string, pairs>;并得到以下错误消息:
error CS0246: The type or namespace name 'pairs' could not be found (are you missing a using directive or an assembly reference?为什么这是一个错误,并有一个解决办法?
发布于 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时,编译器对引用别名的存在一无所知。
using pairs = Dictionary<string, int>;
using allPairs = Dictionary<string, pairs>;在上述代码中,第二行将导致编译时错误,因为它不受第一个使用别名指令的影响。
发布于 2020-04-10 11:40:20
其实没有。使用别名指令不使用源代码文件中的使用指令来解析类型,有关更多信息,请参考https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs0246。
https://stackoverflow.com/questions/61139309
复制相似问题