Partial (Visual Basic)


Updated: July 20, 2015

For the latest documentation on Visual Studio 2017, see Visual Studio 2017 Documentation.

Indicates that a type declaration is a partial definition of the type.

You can divide the definition of a type among several declarations by using the Partial keyword. You can use as many partial declarations as you want, in as many different source files as you want. However, all the declarations must be in the same assembly and the same namespace.

System_CAPS_ICON_note.jpg Note

Visual Basic supports partial methods, which are typically implemented in partial classes. For more information, see Partial Methods and Sub Statement.

[ <attrlist> ] [ accessmodifier ] [ Shadows ] [ MustInherit | NotInheritable ] _  
Partial { Class | Structure | Interface | Module } name [ (Of typelist) ]  
    [ Inherits classname ]  
    [ Implements interfacenames ]  
    [ variabledeclarations ]  
    [ proceduredeclarations ]  
{ End Class | End Structure }  

attrlistOptional. List of attributes that apply to this type. You must enclose the Attribute List in angle brackets (< >).
accessmodifierOptional. Specifies what code can access this type. See Access Levels in Visual Basic.
ShadowsOptional. See Shadows.
MustInheritOptional. See MustInherit.
NotInheritableOptional. See NotInheritable.
nameRequired. Name of this type. Must match the name defined in all other partial declarations of the same type.
OfOptional. Specifies that this is a generic type. See Generic Types in Visual Basic.
typelistRequired if you use Of. See Type List.
InheritsOptional. See Inherits Statement.
classnameRequired if you use Inherits. The name of the class or interface from which this class derives.
ImplementsOptional. See Implements Statement.
interfacenamesRequired if you use Implements. The names of the interfaces this type implements.
variabledeclarationsOptional. Statements which declare additional variables and events for the type.
proceduredeclarationsOptional. Statements which declare and define additional procedures for the type.
End Class or End StructureEnds this partial Class or Structure definition.

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.

All the rules for class, structure, interface, and module creation, such as those for modifier usage and inheritance, apply when creating a partial type.

  • Under normal circumstances, you should not split the development of a single type across two or more declarations. Therefore, in most cases you do not need the Partial keyword.

  • For readability, every partial declaration of a type 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.

  • Union of Declarations. The compiler treats the type as the union of all its partial declarations. Every modifier from every partial definition applies to the entire type, and every member from every partial definition is available to the entire type.

  • Type Promotion Not Allowed For Partial Types in Modules. If a partial definition is inside a module, type promotion of that type 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:

Class Statement

Structure Statement

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.

Class Statement
Structure Statement
Type Promotion
Generic Types in Visual Basic
Partial Methods