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

Ejecuta una serie de instrucciones que consulte repetidamente a un único objeto o estructura.

With object
    [ statements ]
End With

Elementos

Término

Definición

expression

Requerido.Una expresión que se evalúa como un objeto.La expresión puede ser más complejo y se evalúan sólo una vez.La expresión puede evaluar a cualquier tipo de datos, incluidos los tipos básicos.

statements

Opcional.Una o más instrucciones entre With y End With que pueden hacer referencia a los miembros de un objeto generado por la evaluación expression.

End With

Requerido.Termina la definición del bloque With.

Comentarios

Mediante With...End With, puede realizar una serie de instrucciones en un objeto especificado sin especificar el nombre de varias veces del objeto.Dentro de un bloque de instrucciones With , puede especificar un miembro del objeto que comienza con un punto, como si el objeto de la instrucción With lo precediera.

Por ejemplo, para cambiar las propiedades de un solo objeto, coloque las instrucciones de asignación de propiedad dentro del bloque With...End With , haciendo referencia al objeto solo una vez en lugar de una vez para cada asignación de la propiedad.

Si el código tiene acceso al mismo objeto en varias instrucciones, obtiene las ventajas siguientes mediante la instrucción With :

  • No es necesario evaluar varias veces una expresión compleja o asignar el resultado a una variable temporal para hacer referencia a sus varias veces de miembros.

  • Hace el código más legible eliminar expresiones necesarias repetitivas.

El tipo de datos expression puede ser cualquier tipo de clase o estructura ni un tipo básico de Visual Basic como Integer.

expression se evalúa una vez, a la entrada en el bloque.No se puede reasignar expression dentro del bloque With .

Dentro de un bloque With , puede tener acceso a los métodos y las propiedades sólo del objeto especificado sin calificarlas.Se pueden utilizar métodos y propiedades de otros objetos, pero es necesario calificarlos con los nombres de objeto.

Puede incluir una instrucción With...End With dentro de otra.Instrucciones anidadas With...End With pueden resultar confusas si los objetos se estén haciendo referencia que no están claro de contexto.Debe proporcionar una referencia completa a un objeto que está en With externo bloqueado cuando el objeto se hace referencia dentro de un bloque interno With .

No puede crear bifurcaciones en un bloque de instrucciones With desde fuera del bloque.

A menos que el bloque contiene un bucle, las instrucciones se ejecutan una sola vez.Puede anidar diferentes tipos de estructuras de control.Para obtener más información, vea Estructuras de control anidadas (Visual Basic).

[!NOTA]

Puede utilizar la palabra clave With en inicializadores de objetos.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).

Si usa With bloqueado para inicializar sólo las propiedades o campos de un objeto que acaba de crear instancias, considere utilizar un inicializador de objeto en su lugar.

Ejemplo

En el ejemplo siguiente, cada bloque With ejecuta una serie de instrucciones en un único objeto.

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

El ejemplo siguiente anida las instrucciones With…End With .Dentro de la instrucción anidada With , la sintaxis hace referencia al objeto interno.

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

Vea también

Referencia

List<T>

Conceptos

Estructuras de control anidadas (Visual Basic)

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

Tipos anónimos (Visual Basic)