private static void Aula01() { List <int> lista = new List <int>(); lista.Add(0); lista.Add(1); lista.Add(2); lista.Add(3); lista.Add(4); lista.Add(5); lista.AddRange(new int[] { 123, 456, 789, 10 }); ListExtensoes.AdicionarVarios(lista, 1234, 5678, 9101112, 13); lista.AdicionarVarios(1597, 3574, 4679, 3157); foreach (var item in lista) { Console.WriteLine(item); } }
static void ListasSort() { // var cc = new ContaCorrente(1112, 11674); var gerenciador = new GerenciadorBonificacao(); var gerenciadores = new List <GerenciadorBonificacao>(); // Utilizando lists List <int> idades = new List <int>(); idades.Add(1); idades.Add(5); idades.Add(14); idades.Add(25); idades.Add(38); idades.Add(61); idades.Remove(25); idades.AddRange(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }); ListExtensoes.AdicionarVarios(idades, 10, 11, 12, 13); //com método de extensão: idades.AdicionarVarios(14, 15, 16, 17); idades.AdicionarVarios <int>(18, 19, 20); for (int i = 0; i < idades.Count; i++) { Console.WriteLine(idades[i]); } idades.Sort(); var nomes = new List <string>() { "Guilherme", "Luana", "Wellington", "Ana" }; nomes.Sort(); foreach (var item in nomes) { Console.WriteLine(item); } var contas = new List <ContaCorrente>() { new ContaCorrente(134, 57480), new ContaCorrente(125, 47480), new ContaCorrente(224, 97880), new ContaCorrente(789, 11180), null, new ContaCorrente(921, 87111), new ContaCorrente(164, 31480), null, null, new ContaCorrente(664, 67480), new ContaCorrente(121, 99990) }; //contas.Sort(new ComparadorCCValores()); //IOrderedEnumerable<ContaCorrente> contasord= contas.OrderBy(item => item.Agencia); var contasSemNulos = contas.Where(conta => conta != null); //IOrderedEnumerable<ContaCorrente> contasord = contasSemNulos.OrderBy(conta => conta.Agencia); var contasord = contas.Where(conta => conta != null).OrderBy(conta => conta.Numero); foreach (var conta in contasord) { Console.WriteLine($"Agencia: {conta.Agencia} Conta: {conta.Numero}"); } }
static void Main(string[] args) { // Usando a classe List, em vez da classe Lista implementada List <int> inteiros = new List <int>(); inteiros.Add(1); inteiros.Add(2); inteiros.Add(3); inteiros.Remove(3); Console.WriteLine(inteiros.Count); inteiros.AddRange(new int[] { 4, 5, 6 }); // Criando uma extensão para List ListExtensoes.AdicionarVarios(inteiros, 1, 5687, 1987, 1567, 987); // Utilizando a extensão com a classe List estendida inteiros.AdicionarVarios(67, 45, 90); Console.WriteLine("Printando lista de inteiros: "); inteiros.PrintaList(); // Testando método de extensão (de string, veja na classe) com argumento genérico string nome = "karina"; nome.TesteGenerico <int>(); nome.TesteGenerico <string>(); int[] a = new int[] { 0, 1, 2 }; int[] b = new int[] { 3, 4, 5 }; Console.WriteLine("Printando arrays concatenadas: "); int[] resultado = a.Concatenar(b); resultado.PrintaArray(); // Usando o tipo "var", o compilador entende que queremos armazenar o // nome do tipo que temos na expressão de atribuição, isto se chama // "Inferência de Tipo de Variável" var conta = new ContaCorrente(344, 56456556); var contas = new List <ContaCorrente>(); conta.Depositar(3443); //var idade; // Erro: "Variáveis de tipo implícito devem ser inicializadas" object outraConta = new ContaCorrente(344, 56456556); // Abaixo, não é permitido pois em object caberia uma referência a // qualquer classe, que não necessariamente teria o método Depositar //outraConta.Depositar(3443); var numeros = SomarVarios(1, 2, 3); Console.WriteLine("Somar vários: " + numeros); // Ordenação inteiros.Sort(); Console.WriteLine("Printando lista ordenada de inteiros: "); inteiros.PrintaList(); var nomes = new List <string>() { "Wellington", "Joana", "Bruna", "Ana" }; nomes.Sort(); Console.WriteLine("Printando lista ordenada de nomes: "); nomes.PrintaList(); var novasContas = new List <ContaCorrente>() { new ContaCorrente(341, 57480), new ContaCorrente(342, 45678), new ContaCorrente(340, 48950), new ContaCorrente(290, 18950) }; // Chama a implementação dada em IComparable: //novasContas.Sort(); // Lançaria uma InvalidOperationException // se não tivéssemos implementado a interface IComparable // Utilizando o comparador: //contas.Sort(new ComparadorContaCorrentePorAgencia()); //novasContas.PrintaList(); // Utilizando expressões lambda: IOrderedEnumerable <ContaCorrente> contasOrdenadas = novasContas.OrderBy(conta => conta.Numero); foreach (var item in contasOrdenadas) { Console.WriteLine($"Conta número {item.Numero}, ag. {item.Agencia}"); } // Para se precaver contra objetos nulos, é possível expandir a expressão: //IOrderedEnumerable<ContaCorrente> contasOrdenadas = // novasContas.OrderBy(conta => { // if (conta == null) // { // return int.MaxValue; // Deixa no final, MinValue deixaria no começo // } // return conta.Numero; // }); // Exemplo com tipo sem propriedades var meses = new List <string>() { "janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro" }; meses.OrderBy(mes => mes); // Where (retorna um IEnumerable<T>): var maisContas = new List <ContaCorrente>() { new ContaCorrente(341, 66480), null, new ContaCorrente(340, 11111), null }; Console.WriteLine("Filtra contas não nulas e ordena por nº de agência: "); var contasNaoNulas = maisContas .Where(conta => conta != null) .OrderBy(conta => conta.Agencia); foreach (var item in contasNaoNulas) { Console.WriteLine($"Conta número {item.Numero}, ag. {item.Agencia}"); } }
static void ListaGenericaExtensaoLinqLambda() { //Testando lista generica, extensao de metodos, sort(), orderby, //Where, IComprable e IComparer Lista <int> idades = new Lista <int>(); idades.Adicionar(8); idades.AdicionarVarios(4, 9, 6); int idadeSoma = 0; // int idadeSoma2 = null; Tipos de valor n'ao aceitam referencia nula for (int i = 0; i < idades.Tamanho; i++) { // Console.WriteLine($"Item na posição {i} :{idades[i]} "); } var outrasIdades = new List <int>(); ListExtensoes.AdicionarVarios(outrasIdades, 1, 5687, 1987, 1567, 987); //A list do .Net não possui este metodo AdicionarVarios, estamos extendenda da nossa classe Lista<T> outrasIdades.AdicionarVarios(1, 8, 12, 14, 22, 18);//metodo generico outrasIdades.Sort(); outrasIdades.Remove(12); for (int i = 0; i < outrasIdades.Count; i++) { Console.WriteLine($"Item na posição {i} :{outrasIdades[i]} "); } var nomes = new List <string>(); nomes.AdicionarVarios("Daniela", "Bruna", "Julia", "Ana"); nomes.Sort(); for (int i = 0; i < nomes.Count; i++) { Console.WriteLine(nomes[i]); } var contas = new List <ContaCorrente>() { new ContaCorrente(234, 8000), new ContaCorrente(234, 1), null, new ContaCorrente(456, 800), new ContaCorrente(588, 9930) }; //contas.Sort(); // contas.Sort(new ComparadorContaCorrentePorAgencia()); var contasOrdenadas = contas .Where(conta => conta != null) .OrderBy <ContaCorrente, int>(conta => conta.Numero); foreach (var conta in contasOrdenadas) { Console.WriteLine($"Conta número {conta.Numero}, ag. {conta.Agencia}"); } }