Оператор 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

См. также

Ссылки

List<T>

Основные понятия

Вложенные структуры управления (Visual Basic)

Инициализаторы объектов: именованные и анонимные типы (Visual Basic)

Анонимные типы (Visual Basic)