出现这种错误提示的原因是需要通过以下的例子来解说:
“命名空间导入”导入命名空间或类型的所有成员,使得可以不加限定地使用命名空间或类型的每个成员的标识符。对于类型,命名空间导入只允许访问类型的共享成员,不要求限定类名。具体说来,它允许不加限定地使用枚举类型的成员。例如:
Imports Colors Enum Colors Red Green Blue End Enum Module M1 Sub Main() Dim c As Colors = Red End Sub End Module
与导入别名不同,命名空间导入在导入的名称方面不受限制,可以导入标识符已在全局命名空间内声明的命名空间和类型。常规导入所导入的名称被源文件中的导入别名和声明隐藏。
在下面的示例中,A
是指 N3
命名空间中的成员声明内的 N3.A
而不是 N1.N2.A
。
Imports N1.N2 Namespace N1.N2 Class A End Class End Namespace Namespace N3 Class A End Class Class B Inherits A End Class End Namespace
当多个导入的命名空间中包含同名成员时(而且该名称没有以其他方式被导入别名或声明隐藏),对该名称的引用是多义的,将导致编译时错误。
Imports N1 Imports N2 Namespace N1 Class A End Class End Namespace Namespace N2 Class A End Class End Namespace Namespace N3 Class B Inherits A ' Error, A is ambiguous. End Class End Namespace
在上例中,N1
和 N2
都包含成员 A
。因为 N3
导入两者,所以在 N3
中引用 A
会导致编译时错误。在这种情况下,若要解决这种冲突,可以限定对 A
的引用,也可以引入挑选特定 A
的导入别名,如下例所示:
Imports N1 Imports N2 Imports A = N1.A Namespace N3 Class B Inherits A ' A means N1.A. End Class End Namespace
只能导入命名空间、类、结构、枚举类型和标准模块。
ImportsNamespaceClause ::= NamespaceOrTypeName
-------------
文档来自:http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vbls7/html/vblrfvbspec5_2_2.asp
----------------------
注:ambiguous有“不明确”之意,当在同一个namespace中出现两个同名的class时,也会出现ambiguous错误