|
Imports 语句 |
来源:转载 人气:1717 录入时间:2007-11-8 |
Imports 语句
Imports 语句将实体名称导入源文件,使得可以不加限定地引用名称。
在包含 Imports 语句的源文件的成员声明中,可直接引用给定命名空间中包含的类型,如下例所示:
Imports N1.N2
Namespace N1.N2
Class A
End Class
End Namespace
Namespace N3
Class B
Inherits A
End Class
End Namespace
在此例的源文件中,命名空间 N1.N2 的类型成员直接可用,因此类 N3.B 从类 N1.N2.A 派生。
Imports 语句必须出现在所有 Option 语句之后,但在所有类型声明之前。编译环境还可以定义隐式的 Imports 语句。
Imports 语句使名称在源文件中可用,但不在全局命名空间的声明空间中进行任何声明。Imports 语句导入的名称范围在源文件所包含的命名空间成员声明上扩展。Imports 语句的范围明确不包括其他 Imports 语句,也不包括其他源文件。Imports 语句不能相互引用。
在下面的示例中,最后一个 Imports 语句出错,因为它不受第一个导入别名的影响。
Imports R1 = N1 '' OK.
Imports R2 = N1.N2 '' OK.
Imports R3 = R1.N2 '' Error: Can''t refer to R1.
Namespace N1.N2
End Namespace
注意 Imports 语句中出现的命名空间或类型名称总是被作为完全限定名处理。也就是说,命名空间或类型名称中最左侧的标识符总是在全局命名空间中解析,其余的解析则按照普通的名称解析规则进行。这是语言中适用此规则的唯一位置;此规则确保了名称不能对限定完全隐藏。若没有此规则,当全局命名空间中的名称被隐藏在特定的源文件中时,就不可能以限定的方式指定该命名空间中的任何名称。
在下面的示例中,Imports 语句始终引用全局 System 命名空间,而不是源文件中的类。
Imports System '' Imports the namespace, not the class.
Class System
End Class
ImportsStatement ::= Imports ImportsClauses LineTerminator
ImportsClauses ::=
ImportsClause |
ImportsClauses , ImportsClause
ImportsClause ::= ImportsAliasClause | ImportsNamespaceClause
|
|
|