Questão nº 43
Questão de Tecnologia da Informação · FGV MP-SC 2022 (nº 43)
No âmbito da linguagem C#, analise o trecho de código a seguir.
```
class Pessoa
{
private string nome;
public string Nome
{
get { return nome; }
set { nome = value; }
}
}
```
A sintaxe C# permite que a sexta e a sétima linhas sejam resumidas pelo trecho:
- A`{ get; set; }` (alternativa correta)
- B`{ get(); set(value); }`
- C`{ get <- nome; set -> nome; }`
- D```
get { -> nome }
set { nome <= args[] }
``` - E```
get { return this.nome; }
set { let this.nome = args[]; }
```
Resposta comentada
Gabarito Alternativa A
O conceito-chave é propriedade autoimplementada (auto-property): o C# gera automaticamente um campo privado invisível para armazenar o valor, então você não precisa declarar nome nem escrever get/set com corpo. Basta { get; set; } para criar uma propriedade que lê e grava sem lógica extra.
- (A) Correta: É exatamente a sintaxe de propriedade autoimplementada: o compilador cria o campo de apoio e os acessores
getesetvazios, substituindo as linhas 6 e 7 do código original. - (B) Incorreta:
get()eset(value)não são sintaxe válida em C#; acessores não usam parênteses nem parâmetro explícito noset(o valor é a palavra-chavevalue). - (C) Incorreta: Os operadores
<-e->não existem para propriedades em C#; isso parece sintaxe de outras linguagens ou de setas, não do C#. - (D) Incorreta:
-> nomeenome <= args[]são invenções; C# usareturnevalue, não setas nemargs[]para o valor atribuído. - (E) Incorreta:
letnão é palavra-chave do C# (é de JavaScript/F#) eargs[]não representa o valor atribuído; o correto seriaset { nome = value; }.
Armadilha do distrator mais tentador (E): A banca mistura return this.nome (que parece lógico) com let e args[], que são de outras linguagens. Quem não domina a sintaxe exata do C# pode achar que args[] é o valor recebido no set, mas o C# usa a palavra reservada value.
Fonte: FGV MP-SC 2022 Analista em Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.