2017-02-27 72 views
0

我已经用短同义词命名了一个类型。 在下一行我试图通过它的这个新的短名称以某种方式使用此类型(无所谓):使用类型同义词原因CS0246类型或名称空间名称...无法找到

using A = SomeTypeName; 
using B = A; 

但在第2行的编译器没有发现名称为“A” &生成错误(见标题)。 为什么?

+2

因为这是不允许的。查看文档:https://msdn.microsoft.com/en-us/library/aa664765(v=vs.71).aspx - 请参阅上次示例前面的示例,了解为什么使用名称空间/类型别名将不会作为另一个别名的一部分。这个措辞有点令人困惑,但它基本上是说编译器试图解析类型/名称空间A,而不用在同一编译单元中应用任何先前定义的别名。 – PaulF

回答

2

ECMA-334 9.4.1使用别名指令说:

中使用别名指令的排列顺序没有 意义,名称空间或类型名称的解析由使用别名指令引用的 不受 使用别名指令本身或立即包含编译单元或名称空间主体的 中的其他使用指令的影响。 在其他 单词中,using-alias-directive的名称空间或类型名称为 ,解析为就好像立即包含的编译单元或 名称空间主体没有使用指令然而,使用别名指令 会受到包含编译单元或名称空间主体的立即 中的外部别名指令的影响。

相关问题