Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
Conceptos
Estructuras de control anidadas (Visual Basic)
Inicializadores de objeto: Tipos con nombre y anónimos (Visual Basic)