Оператор With... End With (Visual Basic)
Выполняет ряд выписок, повторно относится к одному объекту или структуре.
With object
[ statements ]
End With
Части
Термин |
Определение |
expression |
Обязательное.Выражение, результатом которого является этот объект.Выражение может быть произвольным образом комплексом и вычисляется только один раз.Выражение может иметь любой тип данных, включая базовые типы. |
statements |
Необязательный параметр.Один или несколько выписки между With и End With, могут относиться к членам объекта, формируемом оценкой expression. |
End With |
Обязательное.Завершает определение блока With. |
Заметки
С помощью With...End With можно выполнить ряд выписок в указанном объекте несколько раз без указания имени объекта.Внутри блока выписки With можно указать член объекта, начиная с точки, если объект With выписки предшествовал его.
Например, чтобы изменить несколько свойств в одном объекте, поместите операторы присваивания свойства внутри блока With...End With, ссылаясь на объект только один раз, а не один раз для каждого присваивания свойства.
Если код обращается к одному и тому же объекту в нескольких выписках, можно получить следующие преимущества с помощью выписки With:
Нет необходимости вычислять несколько раз сложного выражения или присвоить его результат временной переменной для обращения к его времени нескольких участников.
Сделать код более четкой за счет исключения повторяющихся указание выражений.
Тип данных expression может быть любым типом класса или структуры или даже типом Visual Basic элементарным в качестве Integer.
expression вычисляется один раз для записи в блоке.Нельзя назначить expression внутри блока With.
Внутри блока With, можно получить доступ к методам и свойствам только заданного объекта без указания их.Можно использовать методы и свойства других объектов, однако необходимо указывать их имена полностью.
Можно задать одну выписку With...End With в другом.Вложенные выписки With...End With можно перепутать если ссылайтесь на объекты, которые не ясны из контекста.Необходимо предоставить полную ссылку на объект, во внешнем блоке With, когда объект ссылается из внутреннего блока With.
Невозможно разрешить разветвление в блоке выписки With вне блока.
Если блок не будет содержать цикл, выписки выполняются только один раз.Можно вложить различные типы структур элементов управления.Дополнительные сведения см. в разделе Вложенные структуры управления (Visual Basic).
Примечание |
---|
Можно использовать ключевое слово With в инициализаторах объектов.Дополнительные сведения и примеры см. в разделах Инициализаторы объектов: именованные и анонимные типы (Visual Basic) и Анонимные типы (Visual Basic). Если используется блок With только для инициализации свойства или поля объекта, который был только что созданные, рассмотрите возможность использования инициализатора объекта. |
Пример
В следующем примере каждый блок With выполняет ряд выписок в одном объекте.
Private Sub AddCustomer()
Dim theCustomer As New Customer
With theCustomer
.Name = "Coho Vineyard"
.URL = "http://www.cohovineyard.com/"
.City = "Redmond"
End With
With theCustomer.Comments
.Add("First comment.")
.Add("Second comment.")
End With
End Sub
Public Class Customer
Public Property Name As String
Public Property City As String
Public Property URL As String
Public Property Comments As New List(Of String)
End Class
В следующем примере вложенная выписки With…End With.В пределах вложенного With выписки синтаксис относится к внутреннему объекту.
Dim theWindow As New EntryWindow
With theWindow
With .InfoLabel
.Content = "This is a message."
.Foreground = Brushes.DarkSeaGreen
.Background = Brushes.LightYellow
End With
.Title = "The Form Title"
.Show()
End With
См. также
Ссылки
Основные понятия
Вложенные структуры управления (Visual Basic)
Инициализаторы объектов: именованные и анонимные типы (Visual Basic)