Partial (Visual Basic)
Indicates that a class or structure declaration is a partial definition of the class or structure.
[ <attrlist> ] [ accessmodifier ] [ Shadows ] [ MustInherit | NotInheritable ] _
Partial { Class | Structure } name [ (Of typelist) ]
[ Inherits classname ]
[ Implements interfacenames ]
[ variabledeclarations ]
[ proceduredeclarations ]
{ End Class | End Structure }
Parts
- attrlist
Optional. List of attributes that apply to this class or structure. You must enclose the Attribute List in angle brackets (< >).
- accessmodifier
Optional. Specifies what code can access this class or structure. See Access Levels in Visual Basic.
- Shadows
Optional. See Shadows.
- MustInherit
Optional. See MustInherit.
- NotInheritable
Optional. See NotInheritable.
- name
Required. Name of this class or structure. Must match the name defined in all other partial declarations of the same class or structure.
- Of
Optional. Specifies that this is a generic class or structure. See Generic Types in Visual Basic.
- Inherits
Optional. See Inherits Statement.
- classname
Required if you use Inherits. The name of the class or interface from which this class derives.
- Implements
Optional. See Implements Statement.
- interfacenames
Required if you use Implements. The names of the interfaces this class or structure implements.
- variabledeclarations
Optional. Statements which declare additional variables and events for the class or structure.
- proceduredeclarations
Optional. Statements which declare and define additional procedures for the class or structure.
- End Class or End Structure
Ends this partial Class or Structure definition.
Remarks
You can divide the definition of a class or structure among several declarations with the Partial keyword. You can use as many partial declarations as desired, in as many different source files as desired. However, all the declarations must be in the same assembly and the same namespace.
Note
Visual Basic uses partial-class definitions to separate generated code from user-authored code in separate source files. For example, the Windows Form Designer defines partial classes for controls such as Form. You should not modify the generated code in these controls.
Under normal circumstances, you should not split the development of a single class or structure across two or more declarations. Therefore, in most cases you do not need the Partial keyword.
All the rules for class and structure creation, such as those for modifier usage and inheritance, apply when creating a partial class or structure.
Best Practices
- Keyword Usage. For readability, every partial declaration of a class or structure should include the Partial keyword. The compiler allows at most one partial declaration to omit the keyword; if two or more omit it the compiler signals an error.
Behavior
Union of Declarations. The compiler treats the class or structure as the union of all its partial declarations. Every modifier from every partial definition applies to the entire class or structure, and every member from every partial definition is available to the entire class or structure.
Type Promotion Not Allowed For Partial Types in Modules. If a partial definition is inside a module, type promotion of that class or structure is automatically defeated. In such a case, a set of partial definitions can cause unexpected results and even compiler errors. For more information, see Type Promotion.
The compiler merges partial definitions only when their fully qualified paths are identical.
The Partial keyword can be used in these contexts:
Example
The following example splits the definition of class sampleClass
into two declarations, each of which defines a different Sub procedure.
Partial Public Class sampleClass
Public Sub sub1()
End Sub
End Class
Partial Public Class sampleClass
Public Sub sub2()
End Sub
End Class
The two partial definitions in the preceding example could be in the same source file or in two different source files.
See Also
Reference
Class Statement (Visual Basic)
Structure Statement
Shadows