With...End With (Instrucción, Visual Basic)

Ejecuta una serie de instrucciones que hacen referencia repetidas veces a un único objeto o estructura.

With object
    [ statements ]
End With

Partes

Término

Definición

object

Obligatorio. Variable o expresión. Se puede evaluar como cualquier tipo de datos, incluidos los tipos elementales.

statements

Opcional. Una o más instrucciones incluidas entre With y End With que se ejecutan en object.

End With

Obligatorio. Termina la definición del bloque With.

Comentarios

With...End With permite realizar una serie de instrucciones sobre un objeto especificado sin volver a calificar el nombre del objeto. Si la ruta de acceso de calificación al objeto es larga, utilizar With...End With puede mejorar el rendimiento. Un bloque With también reduce la necesidad de escribir repetidamente la ruta de acceso de calificación y el riesgo de cometer errores al escribir alguno de sus elementos.

Por ejemplo, para cambiar un número de propiedades diferentes en un único objeto, coloque las instrucciones de asignación de las propiedades dentro de With...End With, haciendo referencia al objeto una vez, en lugar de hacerlo en cada una de las asignaciones de propiedades.

Reglas

  • Tipos de datos. El tipo de datos de object puede ser cualquier tipo de clase o estructura, o incluso un tipo elemental de Visual Basic como Integer. .NET Framework admite todos los tipos elementales con clases o estructuras, que tienen los miembros a los que puede obtener acceso dentro de un bloque With.

  • Declaración. Debe declarar object antes de escribir el bloque With. No puede declararlo en la instrucción With.

  • Número de iteraciones. Un bloque With no es una construcción iterativa. A menos que haya un bucle dentro del bloque, las instrucciones sólo se ejecutan una vez.

  • Estructuras anidadas. Las estructuras With...End With se pueden anidar colocando una estructura dentro de otra. Para obtener un ejemplo, vea Cómo: Realizar varias acciones en un objeto (Visual Basic).

    Sin embargo, como los miembros de instrucciones externas están enmascarados dentro de las instrucciones internas, debe proporcionar una referencia de objeto completa en un bloque With interno a cualquier miembro de un bloque With externo.

    También puede anidar distintos tipos de estructuras de control dentro de otras. Para obtener más información, vea Estructuras de control anidadas (Visual Basic).

  • Transferir fuera de la estructura. Visual Basic no admite Exit (Instrucción, Visual Basic) para transferir el control fuera de un bloque With. Si es necesario salir antes de que se hayan ejecutado todas las instrucciones, coloque una etiqueta en la instrucción End With y utilice la GoTo (Instrucción) para bifurcar la ejecución hacia ella. Para obtener más información, vea Cómo: Aplicar etiquetas a las instrucciones (Visual Basic).

    El control no se puede transferir desde fuera de un bloque With hacia su interior, ni desde dentro de él hacia el exterior. Puede llamar a un procedimiento desde dentro del bloque, pero el control vuelve a la instrucción siguiente.

  • Acceso a otros objetos. Una vez escrito un bloque With, object no se puede reasignar hasta haber pasado la instrucción End With. Por consiguiente, se puede tener acceso a los métodos y propiedades de sólo el objeto especificado sin calificarlos. Se pueden utilizar métodos y propiedades de otros objetos, pero es necesario calificarlos con los nombres de objeto.

Ejemplo

El ejemplo siguiente utiliza un bloque With para ejecutar una serie de instrucciones en un único objeto. El ejemplo supone que ya se ha creado el objeto testObject y expone las propiedades a las que se hace referencia.

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

Con palabra clave en inicializadores de objetos

La palabra clave With también se puede usar en inicializadores de objeto. Para obtener más información y ejemplos, vea Inicializadores de objeto: Tipos con nombre y anónimos (Visual Basic) y Tipos anónimos (Visual Basic).

Vea también

Tareas

Cómo: Realizar varias acciones en un objeto (Visual Basic)

Cómo: Aplicar etiquetas a las instrucciones (Visual Basic)

Referencia

Exit (Instrucción, Visual Basic)

GoTo (Instrucción)

Conceptos

Estructuras de control anidadas (Visual Basic)

Inicializadores de objeto: Tipos con nombre y anónimos (Visual Basic)

Tipos anónimos (Visual Basic)