Partial (Visual Basic)

Указывает, что объявление типа — это частичное определение типа.

Вы можете разделить определение типа среди нескольких объявлений, используя ключевое слово Partial. Можно использовать столько частичных объявлений, сколько необходимо, во множестве исходных файлах. Однако все объявления должны находиться в одной сборке и одном пространстве имен.

Примечание.

Visual Basic поддерживает частичные методы, которые обычно реализуются в частичных классах. Дополнительные сведения см. в разделе "Частичные методы " и "Вложенный оператор".

Синтаксис

[ <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 Необязательно. Указывает, какой код может получить доступ к этому событию. См. раздел Access levels in Visual Basic.
Shadows Необязательно. См . тени.
MustInherit Необязательно. См . раздел MustInherit.
NotInheritable Необязательно. См . раздел NotInheritable.
name Обязательный. Имя данного типа. Оно должно соответствовать имени, определенному в других частичных объявлениях того же типа.
Of Необязательно. Указывает, что это универсальный тип. См . универсальные типы в Visual Basic.
typelist Требуется, если вы используете. См . список типов.
Inherits Необязательно. См . инструкцию "Наследование".
classname Обязательный параметр, если используется параметр Inherits. Имя класса или интерфейса, от которого наследует этот класс.
Implements Необязательно. См . инструкцию "Реализация".
interfacenames Обязательный параметр, если используется параметр Implements. Имена интерфейсов, реализуемых этим типом.
variabledeclarations Необязательно. Операторы, которые объявляют дополнительные переменные и события для типа.
proceduredeclarations Необязательно. Операторы, которые объявляют и определяют дополнительные процедуры для типа.
End Class или End Structure Завершает этот частичное определение Class или Structure.

Замечания

Visual Basic использует разделяемые определения класса для разделения автоматически созданного кода и пользовательского кода в по отдельным файлам исходного кода. Например, конструктор форм Windows Forms определяет разделяемые классы для элементов управления, таких как Form. Не следует изменять код, созданный в этих элементах управления.

Все правила для создания класса, структуры, интерфейса и модуля, например для использования модификатора и наследования, применяются при создании частичного типа.

Рекомендации

  • В обычных условиях не следует разбивать один тип на два или более объявлений. Поэтому в большинстве случаев ключевое Partial слово не требуется.

  • Для удобочитаемости каждое частичное объявление типа должно включать ключевое слово Partial. Компилятор позволяет пропускать ключевое слово только в одном частичном объявлении. Если это происходит в двух или более объявлениях, компилятор сообщает об ошибке.

Поведение

  • Объединение объявлений. Компилятор рассматривает тип как объединение всех его частичных объявлений. Каждый модификатор из каждого частичного определения применяется ко всему типу, а каждый элемент из каждого частичного определения доступен для всего типа.

  • Недопустимое повышение типа для частичных типов в модулях. Если частичное определение находится внутри модуля, повышение типа этого типа автоматически отменяется. В таком случае набор частичных определений может привести к непредсказуемым результатам и даже ошибкам компилятора. Дополнительные сведения см. в разделе "Повышение типов".

    Компилятор объединяет частичные определения, только если их полные пути идентичны.

Ключевое слово Partial можно использовать в следующих контекстах:

Оператор Class

Оператор Structure

Пример

Следующий пример разделяет определение класса sampleClass на два объявления, в каждом из которых определяется отдельная процедура Sub.

Partial Public Class sampleClass
    Public Sub sub1()
    End Sub
End Class
Partial Public Class sampleClass
    Public Sub sub2()
    End Sub
End Class

Два частичных определения в предыдущем примере могут находиться в одном или двух исходных файлах.

См. также