给出以下代码段:
using System;
using Foo = System.Int32;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我删除"系统".从我在"Foo"类型别名的声明中的Int32前面,我得到一个编译器错误.尽管我在文件顶部使用System命名空间,但编译器找不到不合格的"Int32"类型.
这是为什么?
Ree*_*sey 10
这是因为C#规范说它必须是.更具体地说,C#规范中的第9.4.1节说:
写入using-alias-directives的顺序没有意义,using-alias-directive引用的namespace-or-type-name的解析不受using-alias-directive本身或其他使用的影响 - 立即包含编译单元或命名空间体中的指令.换句话说,using-alias-directive的namespace-or-type-name被解析为好像直接包含编译单元或命名空间体没有using-directives.但是,using-alias-directive可能会受到包含在内的编译单元或命名空间体中的extern-alias-directive的影响.
由于顺序无关紧要,因此using System;对using-alias-directive没有影响.重要的具体部分是:" using-alias-directive的namespace-or-type-name被解析为好像直接包含编译单元或命名空间体没有using-directives ".
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |