Pular para o conteúdo principal

Questão de Programação — C Sharp — Quadrix 2025

ProgramaçãoC Sharp
Código
qg596729
Banca
Quadrix
Órgão
CRC-SP
Ano
2025
Nível
Superior
Cargo
Analista de Desenvolvimento
A respeito das linguagens de programação, julgue o item a seguir.Em C#, as variáveis não precisam ser tipadas explicitamente, pois a linguagem é fracamente tipada.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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”.

C# e a tipagem de variáveis

Gabarito: letra E (ERRADO). A afirmação está incorreta porque C# é uma linguagem fortemente tipada e estaticamente tipada, e não fracamente tipada. Embora C# ofereça o recurso de inferência de tipos com a palavra-chave var, isso não elimina a tipagem forte da linguagem — o tipo da variável é definido em tempo de compilação e não pode ser alterado durante a execução.

A tipagem de uma linguagem de programação é um conceito fundamental que se divide em dois eixos principais: forte × fraca e estática × dinâmica. A tipagem forte refere-se ao rigor com que a linguagem trata os tipos de dados, impedindo ou restringindo operações entre tipos incompatíveis sem conversão explícita. Já a tipagem estática significa que o tipo de uma variável é definido em tempo de compilação, antes da execução do programa. C# se enquadra em ambas as categorias: é fortemente tipada porque não permite, por exemplo, somar um inteiro com uma string sem conversão explícita, e é estaticamente tipada porque o tipo de cada variável é verificado e fixado durante a compilação.

A confusão que a banca explora nesta questão é a existência da palavra-chave var em C#. Muitos candidatos interpretam que var significa que a variável não precisa ser tipada, o que é um equívoco. Na verdade, var é uma declaração implícita de tipo: o compilador infere o tipo da variável a partir do valor atribuído, mas o tipo é definido estaticamente em tempo de compilação. Por exemplo, ao escrever var numero = 10;, o compilador infere que numero é do tipo int, e essa variável não poderá receber uma string posteriormente. Isso é diferente de linguagens fracamente tipadas e dinamicamente tipadas, como JavaScript, onde uma variável pode mudar de tipo durante a execução.

Para ilustrar a diferença na prática, considere o seguinte código em C#:

var numero = 10;      // o compilador infere que numero é int
numero = "texto";     // erro de compilação: não é possível converter string em int

Em JavaScript, o equivalente seria:

let numero = 10;      // numero é um número
numero = "texto";     // permitido: a variável muda de tipo dinamicamente

Essa distinção é crucial: enquanto JavaScript é dinamicamente tipada (o tipo é definido em tempo de execução) e fracamente tipada (permite coerções implícitas), C# é estaticamente tipada (o tipo é definido em tempo de compilação) e fortemente tipada (exige conversões explícitas para operações entre tipos incompatíveis).

A pegadinha desta questão está em associar a inferência de tipos (var) com tipagem fraca. A banca tenta induzir o candidato a pensar que, por existir var, as variáveis em C# não precisam ser tipadas explicitamente, o que é verdade apenas em parte: elas não precisam ser declaradas com o tipo explícito, mas o tipo é inferido e fixado pelo compilador. A linguagem continua sendo fortemente tipada, pois o tipo é verificado rigorosamente em tempo de compilação.

NÃO CAIA NESSA!

A banca troca o conceito de inferência de tipos (var) por tipagem fraca. O candidato que conhece var pode achar que C# é fracamente tipada, mas var apenas infere o tipo em tempo de compilação — a linguagem continua fortemente tipada e estaticamente tipada. Lembre-se: var não é o mesmo que dynamic em C#; dynamic sim permite mudança de tipo em tempo de execução, mas é uma exceção que deve ser usada com cautela.

Forte
Fraca
Dinâmica
C#
C++
Estática
Python
JavaScript
LEVEL · soulevel.com.br

Alternativa E — ❌ Incorreta (Gabarito)

A afirmação "Em C#, as variáveis não precisam ser tipadas explicitamente, pois a linguagem é fracamente tipada" está errada por dois motivos:

  1. C# é fortemente tipada, não fracamente tipada. A linguagem exige que operações entre tipos incompatíveis sejam feitas com conversão explícita (cast), e o compilador verifica a compatibilidade de tipos em tempo de compilação.

  2. As variáveis podem não ser tipadas explicitamente graças à inferência de tipos com var, mas isso não torna a linguagem fracamente tipada. O tipo é inferido pelo compilador e permanece fixo durante toda a execução.

A alternativa confunde o recurso de inferência de tipos com tipagem fraca, que são conceitos distintos. A inferência de tipos é uma característica de linguagens estaticamente tipadas que permite omitir a declaração explícita do tipo, enquanto a tipagem fraca refere-se à permissividade da linguagem em realizar coerções implícitas entre tipos diferentes.

Gabarito: letra E (ERRADO).

Link permanente: /questoes/qg596729