Olá a todos! Redirecionando uma informação interessante para todos:
Estimados amigos,
COMEÇOU DE NOVO!!! :))
O Programa de Treinamento Students To Business da MICROSOFT (S2B) está no ar!

D I V U L G U E M !!!
VALE TUDO: blog, MSN, orkut, MC Donalds, Igreja, escola, faculdade, ...
Maringá aos poucos começa a ser lembrada no cenário nacional de TIC (tecnologia da informação e comunicações).
Isso é muito bom, porque com isso os profissionais e as empresas daqui conquistam maior reconhecimento do mercado.
As inscrições vão até o dia 30 de abril, podem ser feitas através do site www.programas2b.com.br, e dúvidas podem ser tiradas pelo e-mail empresarial@cesumar.br.
O link a seguir tem um breve relato do Programa: http://www.cesumar.br/imprensa/noticia.php?idNoticia=805
Abc,
Freud.
Recebi um link de um amigo agora cedo que me esclareceu essa dúvida que eu tinha. Existe alguma diferença de eu usar string ou String em C#?
Resposta: não. Absolutamente nenhuma. A linguagem C# define alguns aliases (apelidos) para os tipos da CLR. Então quer dizer que string é um alias pra System.String. Assim como bool e Bool, decimal e Decimal, etc. Você pode até misturá-los em uma instanciação, por exemplo:
string z = new System.String('W', 1);Simples, não?
Agradecimentos a meu amigo Antônio Vendramin.
Fonte: http://blogs.msdn.com/csharpfaq/archive/2004/03/12/88418.aspx
Até a próxima!
Olá. Hoje falaremos de alguns recursos das listas genéricas que são muito úteis e bem básicos. O FindAll, que age como um filtro, e o ForEach, um loop. Detalhes simples, mas que fui descobrir depois que começei a estudar para a certificação.
Julga-se que quem estiver lendo isto já tenha algum contato com listas genéricas.
Usarei como exemplo uma classe Pessoa simples:
public class Pessoa
{
public Pessoa()
{
}
public int IdPessoa { get; set; }
public string Nome { get; set; }
public int Idade { get; set; }
}
Utilizaremos 2 listas de Pessoas como exemplo:
List<Pessoa> listaA = new List<Pessoa>();
List<Pessoa> listaB = new List<Pessoa>();
Popularemos a listaA com alguns dados que maipularemos logo abaixo.
listaA.Add(new Pessoa { IdPessoa = 1, Nome = "Juliane", Idade = 23 });
listaA.Add(new Pessoa { IdPessoa = 2, Nome = "Murilo", Idade = 24 });
listaA.Add(new Pessoa { IdPessoa = 3, Nome = "Ityara", Idade = 22 });
listaA.Add(new Pessoa { IdPessoa = 4, Nome = "Luana", Idade = 17 });
listaA.Add(new Pessoa { IdPessoa = 5, Nome = "Genoveva", Idade = 102 });
listaA.Add(new Pessoa { IdPessoa = 6, Nome = "Janaina", Idade = 32 });
listaA.Add(new Pessoa { IdPessoa = 7, Nome = "Lilian", Idade = 23 });
listaA.Add(new Pessoa { IdPessoa = 8, Nome = "Jurema", Idade = 12 });
listaA.Add(new Pessoa { IdPessoa = 9, Nome = "Juliana", Idade = 23 });
Agora, digamos que eu queira popular a listaB somente com as pessoas da listaA que tem o nome começando com 'Ju'.
Antigamente, quando queria filtrar os itens de uma lista, eu utilizava um foreach assim:
foreach (var item in listaA)
{
if (item.Nome.StartsWith("Ju"))
{
listaB.Add(item);
}
}
que ia preenchendo uma outra lista (listaB), para no final eu conseguir a filtragem. Então eu poderia mostrar os dados dessa forma:
foreach (var item in listaB)
{
Console.WriteLine(string.Format("Id: {0} - Nome: {1} - Idade: {2}", p.IdPessoa, p.Nome, p.Idade));
}
De qualquer forma, obtém-se de resultado Juliane, Jurema e Juliana:
Depois que eu descobri que dá pra filtrar utilizando um método chamado FindAll.
Primeiro, considere este seguinte método:
private static bool Filtrador(Pessoa p)
{
return p.Nome.StartsWith("Ju");
}
Como podem ver, o método Filtrador retornará verdadeiro para quando o objeto pessoa tiver a propriedade Nome começando com 'Ju'.
Pois bem, existem três formas bem legais que eu costumo fazer a filtragem. Veja:
//Primeira Forma
listaB = listaA.FindAll(Filtrador);
//Segunda Forma
listaB = listaA.FindAll(delegate(Pessoa p) { return p.Nome.StartsWith("Ju"); });
//Terceira Forma
listaB = listaA.FindAll((Pessoa p) => { return p.Nome.StartsWith("Ju"); });
A primeira forma é a que passa um método (Filtrador) que retorna bool para o FindAll que faz o critério do filtro. Eu prefiro utilizar esse quando necessito do mesmo critério muitas vezes, ou quando eu quero escrever alguma coisa bem mais complicada como critério de filtro.
A segunda e a terceira forma utilizam métodos anônimos (delegate e =>, o Lambda Expression), que é uma coisa muito bacana e ajuda muito a manter o fonte mais limpo e legível (e outras coisas que não mencionarei aqui). Dessa forma você resolve em meia linha o que você gastaria pelo menos 4 para fazer. Destaque para a terceira forma, em que utilizo uma Lambda Expression, que é uma coisa nova que pode ter gente aí que nunca viu. Resumindo a Lambda Expression, ela faz a mesma coisa que o delegate. A diferença, até onde eu sei, é apenas a forma que você escreve (como pode-se ver a diferença da segunda forma para a terceira). Enfim, basta passar um método (Anônimo ou não) que receba um objeto do tipo que está sendo listado, e retorna um booleano. Simples assim.
Para exibir esses dados, ao invés de utilizar um foreach normal, a lista tem um método chamado Foreach. Exemplo:
listaB.ForEach(delegate(Pessoa p)
{
Console.WriteLine(string.Format("Id: {0} - Nome: {1} - Idade: {2}", p.IdPessoa, p.Nome, p.Idade));
});
Também é uma forma mais limpa de se iterar cada item da lista. Se fossemos utilizar um método não anônimo, ele teria que retornar void. Como da vez anterior, temos o mesmo resultado.
Por hoje é só. Outro dia estarei escrevendo algo sobre outros métodos do List<T>. Até mais!
Vou começar a postar aqui artigos de coisas úteis na programação que a gente não vê muito. Logo logo sairá algum post útil.
Até mais!