C# - Diferentes maneira de criar uma lista de objetos
Neste artigo vou mostrar diferentes maneiras de criar uma lista de objetos na linguagem C#. |
Neste artigo veremos como criar uma lista de objetos de diferentes maneiras usando a linguagem C#.
Mãos à obra...
Recursos usados:
Criando o projeto no VS 2017 Community
Abra o VS 2017 Community e crie um novo projeto do tipo Console App com o nome CSharp_ListaObjetos:
Com o projeto criado vamos criar uma pasta chamada Services onde iremos criar a classe Livro e os serviços que vão fornecer a lista de objetos.
No menu Project clique em New Folder e informe Services.
A seguir clique com o botão direito sobre a pasta Services e a seguir clique em Add Class e informe o nome Livro.
Inclua então o código abaixo nesta classe:
public class
Livro { public int LivroId { get; set;} public string Titulo { get; set; } = string.Empty; public string Autor { get; set; } = string.Empty; public string ISBN { get; set; } = string.Empty;
public Livro()
public Livro(int id, string titulo,string autor, string isbn) |
A classe Livro possui 4 propriedades e dois construtores.
Agora vamos iniciar a criação das listas de objetos da classe Livro iniciando com a sintaxe mais básica.
1- Antes da versão 3.0 da linguagem geralmente criávamos uma lista de objetos usando o código abaixo:
using System.Collections.Generic;
namespace CSharp_ListaObjetos.Services
{
public class LivrosService1
{
public List<Livro> GetLivros()
{
var listaLivros = new List<Livro>();
// Inicializa o objeto e o inclui na coleção
var livro1 = new Livro(1,"ASP, ADO e Banco de dados na web","Macoratti","8585943963");
listaLivros.Add(livro1);
var livro2 = new Livro(2,"ASP - Aprenda Rápido", "Macoratti", "8585845214");
listaLivros.Add(livro2);
return listaLivros;
}
}
}
|
Uma variação do código acima seria usar o método AddRange que adiciona os elementos da coleção ao final da lista:
using System.Collections.Generic;
namespace CSharp_ListaObjetos.Services
{
public class LivrosService1
{
public static List<Livro> GetLivros()
{
var listaLivros = new List<Livro>();
listaLivros.AddRange(new[] {
new Livro(1,"ASP, ADO e Banco de dados na web","Macoratti","8585943963"),
new Livro(2,"ASP - Aprenda Rápido", "Macoratti", "8585845214")
});
return listaLivros;
}
}
}
|
2- Com o lançamento da versão 3.0 da linguagem tivemos muitas melhorias incluindo o recurso Collection Initializers, ou inicializadores de coleção, que usamos a seguir:
using System.Collections.Generic;
namespace CSharp_ListaObjetos.Services |
O namespace System.Linq possui a classe Enumerable que contém métodos estáticos que podemos usar para criar uma lista de objetos.
O método Enumerable.Repeat permite gerar uma sequência que contém um valor repetido.
A sintaxe é :
public static IEnumerable<TResult> Repeat<TResult>(TResult element, int count)
onde :
TResult é o elemento a ser repetido e count o número de vezes a repetir o elemento.
Ele é mais indicado para inicializar uma lista de objetos com múltiplas cópias do mesmo elemento.
Para o nosso exemplo podemos fazer assim:
using System.Collections.Generic;
namespace CSharp_ListaObjetos.Services
{
class LivrosService2
{
public static List<Livro> GetLivros()
{
var listaLivros = Enumerable.Repeat(new Livro(), 2).ToList();
return listaLivros;
}
}
}
|
Espiando o objeto listaLivros veremos os dois objetos Livro criados :
Um outro método da mesma classe é Enumerable.Range que pode gerar uma coleção em um intervalo especificado:
A sintaxe é :
public static IEnumerable<int> Range(int start,int count)
onde :
start é o valor do primeiro inteiro da sequência e count o número inteiros a serem gerados.
Usando uma variação deste método para o nosso exemplo temos:
using System.Collections.Generic;
namespace CSharp_ListaObjetos.Services
{
class LivrosService2
{
public static List<Livro> GetLivros()
{
var listaLivros = Enumerable.Range(1, 2).Select(i => new Livro()).ToList();
return listaLivros;
}
}
}
|
O resultado é o mesmo obtido no método Enumerable.Repeat.
Para concluir, para acessar a lista de objetos criada podemos iterar sobre a coleção usando um foreach:
using CSharp_ListaObjetos.Services;
using System;
using System.Collections.Generic;
namespace CSharp_ListaObjetos
{
class Program
{
static void Main(string[] args)
{
List<Livro> lista = LivrosService1.GetLivros();
lista.ForEach(lv => Console.WriteLine(lv.Titulo+"\t"+ lv.Autor));
Console.ReadKey();
}
}
}
|
E estamos conversados...
"Portanto, agora
nenhuma condenação há para os que estão em Cristo Jesus, que não andam segundo a
carne, mas segundo o Espírito."
Romanos 8:1
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
NET - Trabalhando com propriedades e atributos de ... - Macoratti
C# - Trabalhando com Coleções Genéricas do tipo List(<T>) - Macoratti
C# - Testando cada elemento em um Array ou List<T> - Macoratti