Share via


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

Actualización: noviembre 2007

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

With object
    [ statements ]
End With

Partes

  • 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.

    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.

  • Transferir fuera de la estructura. Visual Basic no admite Instrucción Exit (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.

    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

Visual Basic 2008 introduce un nuevo uso de With en inicializadores de objetos. Para obtener más información y ejemplos, vea Inicializadores de objeto: Tipos con nombre y anónimos y Tipos anónimos.

Vea también

Tareas

Cómo: Realizar varias acciones en un objeto

Cómo: Aplicar etiquetas a las instrucciones

Conceptos

Estructuras de control anidadas

Inicializadores de objeto: Tipos con nombre y anónimos

Tipos anónimos

Referencia

Instrucción Exit (Visual Basic)

GoTo (Instrucción)