Considere um ambiente de desenvolvimento em Visual Basic .NET. Quando um desenvolvedor utiliza a instrução 'Using', ele faz com que:
AUma variável seja declarada fora do escopo do bloco de código.
BOs recursos sejam alocados no início e liberados automaticamente ao final do bloco.
CA conexão com o banco de dados permaneça aberta por tempo indeterminado.
DO compilador otimize automaticamente o código para execução em sistemas operacionais diferentes.
EA aplicação se torne independente da plataforma .NET Framework.
Revelar gabarito e comentário▾
GabaritoB — Os recursos sejam alocados no início e liberados automaticamente ao final do bloco.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Instrução Using no Visual Basic .NET
Gabarito: letra B. A instrução Using no Visual Basic .NET (e no C#) é uma construção de gerenciamento de recursos que garante que os recursos alocados sejam liberados automaticamente ao final do bloco, mesmo que uma exceção seja lançada. Ela é a forma idiomática de implementar o padrão Dispose para objetos que implementam a interface IDisposable, como conexões de banco de dados, arquivos e streams.
O Using é uma das construções mais importantes para o programador .NET, pois trata de um problema clássico: o vazamento de recursos não gerenciados. Quando você abre uma conexão com um banco de dados ou um arquivo, está utilizando recursos do sistema operacional que precisam ser devolvidos. Se o programador esquecer de fechá-los, o sistema pode ficar sem recursos, causando lentidão ou até travamentos. O Using resolve isso de forma elegante: ele garante que o método Dispose() seja chamado ao final do bloco, liberando os recursos de forma determinística.
A sintaxe básica em Visual Basic .NET é:
Using conexao As New SqlConnection("string de conexão")
' Código que utiliza a conexão
End Using
O compilador transforma esse bloco em um Try...Finally, onde o Finally chama o Dispose(). Isso significa que, independentemente de o código dentro do bloco ser executado com sucesso ou lançar uma exceção, o recurso será liberado. Essa é a grande vantagem sobre o uso manual de Try...Finally, pois o Using torna o código mais limpo e menos propenso a erros.
É importante distinguir o Using de outras construções. O Using não tem relação com a diretiva Imports (que importa namespaces) nem com a declaração de variáveis fora do escopo. Ele também não tem nada a ver com otimização de código para diferentes sistemas operacionais ou com a independência da plataforma .NET. O Using é exclusivamente sobre o ciclo de vida de recursos: alocar no início e liberar automaticamente ao final.
A pegadinha desta questão é que a banca mistura conceitos de gerenciamento de recursos com conceitos de plataforma e compilação. O candidato que não conhece bem o Using pode ser tentado pelas alternativas que falam de otimização ou independência de plataforma, mas a essência do Using é o gerenciamento automático de recursos. Guarde isso: Using = alocar e liberar automaticamente.
1Aloca recurso no início
2Executa o bloco
3Chama Dispose() no final
4Libera recurso mesmo com exceção
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Afirma que uma variável é declarada fora do escopo do bloco. Isso é o oposto do que o Using faz. A variável declarada no Using tem escopo limitado ao bloco, ou seja, ela só existe dentro do Using e é destruída ao final. Declarar uma variável fora do escopo seria o comportamento de uma variável global ou de uma variável declarada em um escopo mais amplo, o que não é o caso.
Alternativa B — ✅ Correta ⟵ GABARITO
Esta é a definição exata do Using. Ele aloca os recursos no início do bloco (quando a variável é inicializada) e os libera automaticamente ao final, chamando o método Dispose(). Isso garante que recursos como conexões de banco de dados sejam liberados corretamente, mesmo em caso de exceção.
Alternativa C — ❌ Incorreta
Afirma que a conexão com o banco de dados permanece aberta por tempo indeterminado. Isso é exatamente o que o Using evita. O Using garante que a conexão seja fechada ao final do bloco, não importa o que aconteça. Uma conexão que permanece aberta por tempo indeterminado seria o resultado de não usar o Using ou de um gerenciamento manual incorreto.
Alternativa D — ❌ Incorreta
Afirma que o compilador otimiza automaticamente o código para execução em sistemas operacionais diferentes. Isso não tem relação com o Using. A otimização para diferentes sistemas operacionais é uma característica da plataforma .NET (que é multiplataforma), mas não é algo que o Using faça. O Using é uma construção de gerenciamento de recursos, não de otimização de plataforma.
Alternativa E — ❌ Incorreta
Afirma que a aplicação se torna independente da plataforma .NET Framework. Isso também não tem relação com o Using. A independência de plataforma é uma característica do .NET (Core) em si, que roda em Windows, Linux e macOS. O Using não tem nenhum efeito sobre a portabilidade da aplicação.