c# - 类型别名可以用来定义类型别名吗?
问题描述
我尝试通过使用另一个类型别名来定义类型别名,如下所示:
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?
为什么这是一个错误,是否有解决方法?
解决方案
在 using 指令的声明中不能使用using别名。根据c# 规范,
写入的顺序
using_alias_directives
没有意义,namespace_or_type_name
a 引用的解析using_alias_directive
不受其using_alias_directive
自身或直接包含的编译单元或命名空间主体中的其他 using_directives 的影响。
换句话说,编译器using alias directives
在给定的声明空间中单独处理每个。在同一声明空间内进行这种隔离处理的结果,导致不知道alias
给定声明空间中是否存在其他人。因此,当您alias
在 another中引用时using directive
,编译器不知道是否存在引用的别名。
using pairs = Dictionary<string, int>;
using allPairs = Dictionary<string, pairs>;
在上述代码中,第二行将导致编译时错误,因为它不受第一个 using alias 指令的影响。
推荐阅读
- php - 分组php数组
- python - Python Dataframe:随机播放一组行
- f# - 在 F# 中创建一个随机小数
- javascript - 使用 React/Javascript 在 Wordpress API 中按 ID 获取选定的多个帖子/页面
- r - 如何在 R 的数据框中从 ISO8601 格式更改时区?
- sql - Laravel 测试后重置数据库
- c# - 为什么在 Xamarin.Forms 中订阅事件时出现 NullReferenceException,但仅在 iOS 上?
- c++ - C++:存储数据还是持续读取数据效率更高
- javascript - 从集合中单独将数据存储在 redux 中
- makefile - Make 不喜欢 $(addprefix a,b)