指示类型声明是该类型的部分定义。
可以使用关键字在多个声明 Partial
之间划分类型的定义。 可以根据需要使用任意数量的分部声明,在任意数量的不同源文件中。 但是,所有声明都必须位于同一程序集和同一命名空间中。
语法
[ <attrlist> ] [ accessmodifier ] [ Shadows ] [ MustInherit | NotInheritable ] _
Partial { Class | Structure | Interface | Module } name [ (Of typelist) ]
[ Inherits classname ]
[ Implements interfacenames ]
[ variabledeclarations ]
[ proceduredeclarations ]
{ End Class | End Structure }
部件
术语 | 定义 |
---|---|
attrlist |
可选。 应用于此类型的属性的列表。 必须将 属性列表 括在尖括号中(< > )。 |
accessmodifier |
可选。 指定哪些代码可以访问此类型。 请参阅 Visual Basic 中的 Access 级别。 |
Shadows |
可选。 查看 阴影。 |
MustInherit |
可选。 请参阅 MustInherit。 |
NotInheritable |
可选。 请参阅 NotInheritable。 |
name |
必填。 此类型的名称。 必须与同一类型的所有其他分部声明中定义的名称匹配。 |
Of |
可选。 指定这是泛型类型。 请参阅 Visual Basic 中的泛型类型。 |
typelist |
如果使用 Of,则为必需。 请参阅 类型列表。 |
Inherits |
可选。 请参阅 Inherits 语句。 |
classname |
如果使用 Inherits ,则为必需 。 从中派生此类的类或接口的名称。 |
Implements |
可选。 请参阅 Implements 语句。 |
interfacenames |
如果使用 Implements ,则为必需 。 此类型实现的接口的名称。 |
variabledeclarations |
可选。 声明类型的其他变量和事件的语句。 |
proceduredeclarations |
可选。 声明和定义类型的其他过程的语句。 |
End Class 或 End Structure |
结束此部分 Class 或 Structure 定义。 |
注解
Visual Basic 使用分部类定义将生成的代码与用户创作的代码分开到单独的源文件中。 例如, Windows 窗体设计器 为控件(如 Form.)定义分部类。 不应修改这些控件中生成的代码。
创建分部类型时,类、结构、接口和模块创建的所有规则(例如用于修饰符用法和继承的规则)均适用。
最佳做法
在正常情况下,不应将单个类型的开发拆分为两个或多个声明。 因此,在大多数情况下,不需要关键字
Partial
。为了提高可读性,类型的每个部分声明都应包含
Partial
关键字。 编译器最多允许一个分部声明省略关键字;如果两个或更多个省略,编译器会发出错误信号。
行为
声明联合。 编译器将类型视为其所有分部声明的并集。 每个部分定义中的每个修饰符都适用于整个类型,每个部分定义中的每个成员都可用于整个类型。
模块中的分部类型不允许类型提升。 如果部分定义位于模块内,则会自动失败该类型的类型升级。 在这种情况下,一组部分定义可能会导致意外结果,甚至会导致编译器错误。 有关详细信息,请参阅 类型提升。
仅当完全限定的路径相同时,编译器才会合并部分定义。
关键字 Partial
可用于以下上下文:
示例:
以下示例将类 sampleClass
的定义拆分为两个声明,每个声明定义不同的 Sub
过程。
Partial Public Class sampleClass
Public Sub sub1()
End Sub
End Class
Partial Public Class sampleClass
Public Sub sub2()
End Sub
End Class
前面的示例中的两个部分定义可以位于同一源文件或两个不同的源文件中。