Поделиться через


Оператор With... End With (Visual Basic)

Выполняет блок операторов с повторяющимися ссылками на один объект или структуру.

With object
    [ statements ]
End With

Части

Термин

Определение

object

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

statements

Необязательный. Одна или несколько инструкций между With и End With, выполняющихся на object.

End With

Обязательный. Завершает определение блока With.

Заметки

With...End With позволяет выполнить ряд операторов с указанным объектом без повторного указания имени объекта. Если классификационный путь к объекту слишком длинный, использование With...End With может повысить производительность. Блок With также уменьшает количество повторных наборов классификационного пути и риск неверного ввода одного из его элементов.

Например, чтобы изменить ряд различных свойств одного объекта, поместите операторы присваивания свойств внутрь блока With...End With, сославшись на объект лишь единожды, а не на каждом свойстве.

Правила

  • Типы данных. Тип данных у object может быть любым типом класса или структуры или даже простейшим типом Visual Basic (например Integer). Платформа .NET Framework поддерживает все простейшие типы, а также классы или структуры, к членам которых можно получить доступ в блоке With.

  • Объявление. Необходимо объявить object перед блоком With. Невозможно объявить его уже в операторе With.

  • Число итераций. Блок With — это не итерационная конструкция. Если внутри блока не существует циклов, инструкции выполняются лишь раз.

  • Вложенные структуры. Структуры With...End With можно вкладывать друг в друга. Пример см. в разделе Практическое руководство. Выполнение нескольких действий над объектом (Visual Basic).

    Но поскольку члены внешних операторов маскируются во внутренних инструкциях, внутри внутреннего блока With придется использовать полные имена при ссылках на члены объектов внешнего блока With.

    Также можно вложить друг в друга различные виды управляющих структур. Дополнительные сведения см. в разделе Вложенные структуры управления (Visual Basic).

  • Выход из структуры. Visual Basic не поддерживает Оператор Exit (Visual Basic) для передачи управления вовне из блока With. Если необходимо выйти до выполнения всех инструкций, поместите метку на оператор End With и для перехода к нему используйте Оператор GoTo. Дополнительные сведения см. в разделе Практическое руководство. Операторы меток (Visual Basic).

    Невозможно передать управление извне блока With вовнутрь, или наоборот. Можно вызвать процедуру из блока, но управление вернется к следующей инструкции.

  • Доступ к другим объектам. После входа в блок With нельзя переназначить object до прохождения через инструкцию End With. Таким образом, можно получить доступ к методам и свойствам только заданного объекта без их полного описания. Можно использовать методы и свойства других объектов, однако необходимо указывать их имена полностью.

Пример

В следующем примере блок With используется для выполнения последовательности инструкций на одном объекте. В примере предполагается, что объект testObject уже создан и имеет все эти свойства.

With testObject
    .Height = 100
    .Text = "Hello, World"
    .ForeColor = System.Drawing.Color.Green
    .Font = New System.Drawing.Font(.Font,
        System.Drawing.FontStyle.Bold)
End With

Ключевое слово With в инициализаторах объектов

Ключевое слово With можно также использовать в средствах инициализации объектов. Дополнительные сведения и примеры см. в разделах Инициализаторы объектов: именованные и анонимные типы (Visual Basic) и Анонимные типы (Visual Basic).

См. также

Задачи

Практическое руководство. Выполнение нескольких действий над объектом (Visual Basic)

Практическое руководство. Операторы меток (Visual Basic)

Ссылки

Оператор Exit (Visual Basic)

Оператор GoTo

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

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

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

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