ByVal


Uma das coisas chatas que eu considero no Visual Basic .NET é a questão do ByVal nos parametros dos procedimentos. Como todos sabem, se não especificarmos nada quando estamos criando os parametros de um determinado procedimento, por default é colocado ByVal.

Até então sem muitos problemas. Então vou lá e crio um procedimento qualquer, com um parametro do tipo ArrayList e, como não especifiquei se quero ByVal ou ByRef, o editor automaticamente embutiu o maldito ByVal. Pois bem, a questão é que mesmo com ByVal, se eu passar o meu objeto ArrayList para o procedimento e dentro dele alterar esse objeto, como adicionar ou remover elementos, isso refletirá no meu objeto original, ou seja, o comportamento é ByRef.

Isso funciona da mesma forma para tudo o que são objetos no .NET, com excessão dos value-types. Mesmo sem a keyword ByRef, se o objeto sofrer alguma alteração, isso será considerado, já que apontará para o mesmo local – objetos sempre serão ByRef. Será que não havia uma forma de automatizar isso, pois ficaria muito mais legível e de fácil entendimento.

Anúncios

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s