Uma definição de coleção inclui habitualmente um marcador entre sinais de menor e maior, muitas vezes T, por convenção. Uma coleção deste tipo é designada por tipo genérico. Isto permite a quem usa a coleção especificar que tipo de itens quer guardar nela. No exemplo de código abaixo, estamos a criar uma instância de uma lista de strings.
As listas em C# são coleções de valores primitivos ou de instâncias de structs ou de classes. Estão implementadas na biblioteca de classes base como List<T>, em que T é o tipo do item da lista. A API expõe um conjunto rico de métodos para criar e manipular listas.
É possível adicionar e remover itens das listas. As listas crescem e encolhem conforme necessário.
var listOfStrings = new List<string>();
Neste exercício vais escrever código para manteres o registo de uma lista de linguagens de programação que queres aprender no Exercism.
Tens nove tarefas, que vão todas envolver lidar com listas.
Para manteres o registo das linguagens que queres aprender, vais precisar de criar uma nova lista.
Implementa o método estático Languages.NewList() que devolve uma nova lista vazia.
Languages.NewList()
// => empty list
Atualmente, tens um pedaço de papel com a lista das linguagens que queres aprender: C#, Clojure e Elm.
Implementa o método estático Languages.GetExistingLanguages() para devolver a lista.
Languages.GetExistingLanguages();
// => {"C#", "Clojure", "Elm"}
À medida que exploras o Exercism e encontras linguagens mais interessantes, queres adicioná-las à tua lista.
Implementa a função estática Languages.AddLanguage() para adicionar uma nova linguagem ao fim da tua lista.
Languages.AddLanguage(Languages.GetExistingLanguages(), "VBA");
// => {"C#", "Clojure", "Elm", "VBA"}
Contar as linguagens uma a uma é inconveniente.
Implementa o método estático Languages.CountLanguages() para contar o número de linguagens na tua lista.
Languages.CountLanguages(Languages.GetExistingLanguages())
// => 3
Implementa o método estático Languages.HasLanguage() para verificar se uma linguagem está presente.
Languages.HasLanguage(Languages.GetExistingLanguages(), "Elm")
// => true
A certa altura, percebes que a tua lista está na verdade ordenada ao contrário!
Implementa o método estático Languages.ReverseList() para inverter a tua lista.
Languages.ReverseList(Languages.GetExistingLanguages())
// => {"Elm", "Clojure", "C#"}
Embora gostes de todas as linguagens, o C# tem um lugar especial no teu coração. Como tal, ficas realmente entusiasmado com uma lista de linguagens se uma das seguintes condições for verdadeira:
Implementa o método estático Languages.IsExciting() para verificar se uma lista de linguagens é entusiasmante:
Languages.IsExciting(Languages.GetExistingLanguages())
// => true
Implementa o método estático Languages.RemoveLanguage() para remover uma linguagem especificada da lista.
Languages.RemoveLanguage(Languages.GetExistingLanguages(), "Clojure")
// => { "C#", "Elm" }
Implementa o método estático Languages.IsUnique() para verificar se alguma das linguagens se repete na lista.
A lista de linguagens (ou seja, o parâmetro) tem a garantia de não estar vazia quando este método é chamado e não importa se a lista for modificada.
Languages.IsUnique(Languages.GetExistingLanguages())
// => true
Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.