Ferramentas de Utilizador

Ferramentas de Site


dev_net:vb.net:with

O With

Introdução

Para acelerar o desenvolvimento, o VB 2008 possuí uma série de atalhos que nos permitem reduzir a quantidade de linhas ou repetições o que aumenta a legibilidade do código e consequentemente aumenta a facilidade de manutenção. Um dos atalhos mais úteis é sem dúvida o With.

Em repetições

Podemos utilizar o With quando nos queremos referenciar várias vezes à mesma instancia, por exemplo.

        Dim Botao As New Button
 
        With Botao
            .Visible = True
            .Top = 0
            .Left = 0
            .BackColor = Color.Aqua
            .Text = "O meu botão"
        End With
Também o podemos fazer sem o ponto no início para melhorar a legibilidade

A sua utilidade torna-se mais evidente em situações como esta:

Sem With:

        Dim Ano As Integer = My.Computer.Clock.LocalTime.Year
        Dim Mes As Integer = My.Computer.Clock.LocalTime.Month
        Dim Dia As Integer = My.Computer.Clock.LocalTime.Day
        Dim Hora As Integer = My.Computer.Clock.LocalTime.Hour
        Dim Minuto As Integer = My.Computer.Clock.LocalTime.Minute
        Dim Segundo As Integer = My.Computer.Clock.LocalTime.Second

Com With:

        With My.Computer.Clock.LocalTime
            Dim Ano As Integer = .Year
            Dim Mes As Integer = .Month
            Dim Dia As Integer = .Day
            Dim Hora As Integer = .Hour
            Dim Minuto As Integer = .Minute
            Dim Segundo As Integer = .Second
        End With

O With não serve apenas para atribuições directas. Pode ser usado em qualquer situação, por exemplo:

        Dim OFD As New OpenFileDialog
 
        With OFD
            .Title = "Abrir ficheiro"
            .Filter = "ZugZug|zug??.zag"
 
            If .ShowDialog() = Windows.Forms.DialogResult.Cancel Then
                .Title = "Mas eu quero um ficheiro!"
                .ShowDialog()
            End If
 
            Dim SR As New IO.StreamReader(.FileName)
            SR.Close()
        End With

Também o podemos emparelhar:

Public Class Form1
 
    Private Structure Pessoa
        Public Nome As String
        Public Morada As Morada
    End Structure
 
    Private Structure Morada
        Public Pais As String
        Public Cidade As Cidade
    End Structure
 
    Private Structure Cidade
        Public Localidade As Localidade
        Public Distrito As String
    End Structure
 
    Private Structure Localidade
        Public Rua As String
        Public Porta As String
        Public CodigoPostal As String
    End Structure
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        Dim Homem As New Pessoa
        Dim Nome As String = String.Empty
        Dim Rua As String = String.Empty
 
        With Homem
            Nome = .Nome
 
            With .Morada.Cidade.Localidade
                Rua = .Rua
            End With
 
        End With
 
    End Sub
End Class
O exemplo anterior utiliza estructuras. Poderá saber mais sobre estructuras através do artigo: Structures - Classes de brincar

Em inicializações

Em inicializações o With é também bastante útil: Sem With:

        Dim Botao As New Button
        Botao.Top = 0
        Botao.Left = 0
        Botao.Text = "I, Botão."

Com With:

Dim Botao As New Button With {.Top = 0, .Left = 0, .Text = "I, Botão."}

Esta última utilização do With é particularmente útil se estivermos a instanciar objectos fora de uma Sub, onde não podemos atribuír valores logo após inicialização. Com o With, já pode ser instanciado e inicializado.

dev_net/vb.net/with.txt · Esta página foi modificada pela última vez em: 2018/05/14 21:37 (Edição externa)