Questão nº 55
Questão de Tecnologia da Informação · FGV BANESTES 2021 (nº 55)
Considere o código C# a seguir.
```
using System;
namespace MinhaProva
{ class Exemplo
{ static void Main(string[] args)
{ Pessoa Ex = new Pessoa();
Ex.Nome = "Joana";
Console.WriteLine(Ex.Nome);
} } }
```
A implementação correta da classe referida no código acima é:
- A```
namespace MinhaProva
{ class Exemplo
{ private string nome;
public string Nome
{ get { return nome; }
set { nome = value; }
} } }
``` - B```
namespace MinhaProva
{ class Pessoa
{ private string nome;
public string Nome
{ get { return nome; }
set { nome = value; }
} } }
``` (alternativa correta) - C```
namespace MinhaProva
{ class Pessoa
{ private string nome;
public string Nome
{ get return nome;
set nome = value; }
} } }
``` - D```
namespace MinhaProva
{ class Pessoa
{ private string nome;
public string Nome
{ get() { return nome; }
set(string value) { nome = value; }
} } }
``` - E```
namespace MinhaProva
{ class Pessoa
{ private string nome;
public string Nome
{ public get string { return nome; }
public set string { nome = value; }
} } }
```
Resposta comentada
Gabarito Alternativa B
Uma propriedade em C# é um membro de uma classe que fornece um mecanismo flexível para ler, escrever ou computar o valor de um campo privado, combinando a segurança do encapsulamento com a facilidade de acesso. Ela permite controlar como os dados são acessados e modificados.
- (A) Incorreta: A classe definida é
Exemplo, mas o código principal espera uma classe chamadaPessoa(Pessoa Ex = new Pessoa();). - (B) Correta: Esta alternativa define corretamente a classe
Pessoacom um campo privadonomee uma propriedade públicaNome. A propriedadeNomepossui um acessadorget(para leitura) que retorna o valor do camponome, e um acessadorset(para escrita) que atribui o valor recebido (representado pela palavra-chavevalue) ao camponome. Esta é a implementação padrão e correta de uma propriedade em C#. - (C) Incorreta: A sintaxe está incorreta. Os blocos
getesetde uma propriedade devem ter chaves{}envolvendo suas implementações, mesmo que sejam de uma única linha. - (D) Incorreta: Esta é uma armadilha comum. Os acessadores
getesetde uma propriedade em C# não são métodos e, portanto, não utilizam parênteses()como se fossem chamadas de função ou definições de método. Osetnão recebe um tipo explícito paravalueem seus parênteses, poisvalueé uma palavra-chave implícita do tipo da propriedade. - (E) Incorreta: A sintaxe para definir os acessadores
getesetdentro de uma propriedade está incorreta. Não se especificapublicou o tipo (string) diretamente antes degetousetdessa forma. O modificador de acesso e o tipo já são definidos na declaração da propriedade (public string Nome).
Fonte: FGV BANESTES 2021 Analista em Tecnologia da Informação - Desenvolvimento de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.