Qual das próximas afirmações descrevem corretamente o código C# abaixo (selecione todas as corretas):
var pessoa = new {Id = 1, Nome = "Maria"};
A. O código tem um erro e não compila
B. pessoa pode ser reatribuída da seguinte forma: pessoa = new {Idade = 25, Nome = “Pedro”};
C. pessoa é do tipo anônimo (anonymous type)
D. pessoa deriva de Object.
E. Os atributos Id e Nome são somente leitura (read-only)
A primeira coisa a ser feita para resolver esta questão é analisar o código, que apresenta a criação de um novo objeto chamado pessoa, sem no entanto especificar um tipo. Portanto, trata-se de um “tipo anônimo” (anonymous type, em inglês).
Os Tipos Anônimos fornecem uma maneira rápida de encapsular um grupo de propriedades em único objeto, sem que seja necessário definir explicitamente o seu tipo. Os tipos dos atributos são inferidos pelo compilador e não estão disponíveis ao nível do código fonte. Além disto, eles são somente leitura (read-only).
Agora que você já sabe o que é um tipo anônimo, vamos analisar as opções:
- Letra A: errada, pois o código compila perfeitamente;
- Letra B: errada, não é possível reatribuir um tipo anônimo;
- Letra C: correta, trata-se de um tipo anônimo;
- Letra D: correta, tupo em C# deriva de Object; e
- Letra E: correta, já que os atributos de tipos anônimos são somente leitura;
Sendo assim, estão corretas as letras C, D e E.
Atenção
Não confunda um tipo anônimo com a nova forma de instânciar objetos introduzida no C#9, chamada target-typed object creation. Ela permite instanciar um objeto sem usar o nome da classe depois da palavra reservada new, desde que a classe tenha sido explicitamente declarada antes do nome do objeto (mais informações em docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-9.0/target-typed-new – texto em inglês).
public class Pessoa { public int Id; public string Nome; } (...) //a classe "Pessoa" eh explicitamente declarada antes do objeto "pessoa", //não sendo necessario repetir a declaracao depois da palavra "new" Pessoa pessoa = new(1, "Maria");
Origem da questão | ||
País: Holanda | Tipo: Conceitos | Assunto: Tipos Anônimos |
Ramo de negócio da empresa: Consultoria | Grau de Dificuldade: Médio |