Partilhar via


Recomendação de atualização: Usar conversões de ligação e EXPLICIT antecipada

Visual Basic 6.0 e Visual Basic 2008 suporte ao uso atrasado-limite objetos, que é a prática de declarar uma variável sistema autônomo o Object tipo de dados e atribuí-la a uma instância de uma classe em time de execução. Entretanto, durante o processo de atualização, objetos de ligação tardia podem introduzir problemas quando resolvem propriedades padrão, ou em casos quando o modelo do objeto subjacente mudou e propriedades, métodos e eventos precisam ser convertidos.Por exemplo, suponha que você tenha um formulário denominado Form1 com um rótulo denominado Label1; o seguinte código do Visual Basic 6.0 deve conjunto a legenda do rótulo para "SomeText":

Dim o As Object
Set o = Me.Label1
o.Caption = "SomeText"

In Visual Basic 2008, o Caption propriedade de um controle rótulo é substituída pela Text propriedade. Quando seu código é atualizado, todas as instâncias do Caption propriedade são alterados para Text, mas causa da ligação tardia o objeto sem especificação de tipo, Visual Basic não é possível detectar o tipo de objeto ou se alguma propriedade deveria ser traduzida. Em tais casos, você precisará alterar o código após a atualização.

Se você reescrever o código usando objetos com ligação inicial, ele será atualizado automaticamente:

Dim o As Label
Set o = Me.Label1
o.Text = "SomeText"

Sempre que possível, você deve declarar sistema autônomo variáveis de tipo de objeto apropriado em vez de simplesmente declará-los sistema autônomo a Object tipo de dados.

Nos casos em que você usa Object e Variant as variáveis no seu código Visual Basic 6.0, nós recomendamos que use conversões explícitar quando você atribui as variáves, executar operações em variáveis ou passa a variável para uma função. Por exemplo, a intenção da operação '+' no código a seguir não é clara:

Dim Var1 As Variant
Dim Var2 As Variant
Dim Var3 As Variant
Var1 = "3"
Var2 = 4
'BAD: Should Var1 and Var2 be added as strings or integers?
Var3 = Var1 + Var2

O exemplo acima pode resultar em um em time de execução erro em Visual Basic 2008. Reescrever a linha final para usar conversões explícita garante que o código funcionará:

'GOOD: explicit conversion
Var3 = CInt(Var1) + CInt(Var2)

Visual Basic 2008 oferece suporte à sobrecarga de funções com base no tipo de parâmetro. Por exemplo, a Environ função agora possui duas formas:

Environ( Expression As Integer) As String
Environ( Expression As String ) As String

Visual Basic 2008 determina qual a função para chamar baseado no tipo de parâmetro. Se você passar um inteiro para Environ(), a versão inteiro é chamada; se você passar uma seqüência de caracteres, a versão string será chamada. Código que passa um Variant ou Object tipo de dados para uma função sobrecarregada pode causar um erro de compilação erro ou erro em time de execução. Usando uma conversão explícita, sistema autônomo no exemplo a seguir, significa que seu código irá funcionar sistema autônomo esperado após ele ser atualizado para Visual Basic 2008:

Dim a As String
Dim v As Variant
v = "Path"
'GOOD: explicit conversion
a = Environ(CStr(v))

Usar conversões explícitas de objetos de ligação tardia é boa prática de codificação.Ele facilita a intenção do código determinar e torna mais fácil para você atualizar seu projeto para Visual Basic 2008.

Consulte também

Outros recursos

Recomendações de Linguagem para Atualização