Questão de Programação — Visual Basic — Avança SP 2025
- Código
- qg421217
- Banca
- Avança SP
- Órgão
- Prefeitura de Morungaba - SP
- Ano
- 2025
- Nível
- Médio
- Cargo
- Técnico em Informática
- AApenas I.
- BI, II e III.
- CI e III.
- DIII e II
- EI e II.
GabaritoE — I e II.
Gabarito: letra E. Os itens I e II estão corretos: atributos inserem metadados no programa e podem ser aplicados a assemblies, módulos, classes e outros elementos; o item III está incorreto, pois atributos podem aceitar argumentos (por exemplo, em métodos e propriedades). A alternativa correta é a letra E (I e II).
Atributos são um recurso de metadados presente em linguagens como Visual Basic e C#. Eles permitem anexar informações declarativas ao código, que podem ser consultadas em tempo de execução por meio de reflexão. Essas informações não alteram diretamente o comportamento do programa, mas servem para descrever características, configurar comportamentos ou fornecer dados para ferramentas e frameworks.
A capacidade de aplicar atributos é ampla: eles podem ser usados em assemblies, módulos, classes, métodos, propriedades, campos, parâmetros e até mesmo em retornos de métodos. Além disso, é possível aplicar múltiplos atributos a um mesmo elemento, e muitos atributos aceitam argumentos, que são passados ao construtor do atributo. Por exemplo, um atributo pode receber uma string ou um valor numérico para configurar seu comportamento.
A pegadinha da questão está no item III, que afirma que atributos não podem aceitar argumentos. Isso é falso: atributos podem (e frequentemente devem) receber argumentos, como no caso de Obsolete("Use o novo método") ou Serializable(). O candidato que não conhece essa possibilidade pode marcar a alternativa C (I e III), caindo na armadilha.
Para resolver a questão, basta analisar cada item:
Os atributos têm a capacidade de inserir metadados no programa. Isso é exatamente a definição de atributos: eles adicionam informações declarativas (metadados) ao código, que podem ser lidas em tempo de execução.
Pode-se aplicar um ou mais atributos a assemblies completos, módulos ou partes de programas menores, como classes e atributos. A afirmação está correta, pois atributos podem ser aplicados a diversos elementos do código, incluindo assemblies, módulos, classes, métodos, propriedades, etc.
Os atributos têm permissão para aceitar argumentos contidos em métodos e propriedades. Na verdade, muitos atributos aceitam argumentos, que são passados ao construtor do atributo. Por exemplo, Obsolete("mensagem") ou Conditional("DEBUG"). A afirmação de que não podem aceitar argumentos é falsa.
Conclusão: Corretos os itens I e II → portanto, a alternativa é a letra E.
A banca inverte a capacidade dos atributos de aceitar argumentos. O candidato que não conhece a possibilidade de passar argumentos a atributos (como em Obsolete("mensagem")) pode marcar a alternativa C (I e III), mas o item III é falso. Lembre-se: atributos podem receber argumentos, e isso é comum em muitos atributos do .NET.
Para questões sobre atributos, lembre-se de que eles são metadados e podem ser aplicados a vários elementos. Verifique sempre se a afirmação sobre argumentos é verdadeira — na maioria dos casos, atributos aceitam argumentos. Estude os atributos mais comuns do .NET, como Obsolete, Serializable, Conditional e AttributeUsage.
Gabarito: letra E
Link permanente: /questoes/qg421217