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
можно использовать в следующих контекстах:
Пример
Следующий пример разделяет определение класса sampleClass
на два объявления, в каждом из которых определяется отдельная процедура Sub
.
Partial Public Class sampleClass
Public Sub sub1()
End Sub
End Class
Partial Public Class sampleClass
Public Sub sub2()
End Sub
End Class
Два частичных определения в предыдущем примере могут находиться в одном или двух исходных файлах.