Rafael Silva

Students To Business está começando denovo!

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!

securedownload

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.

Afinal, qual a diferença de string e String?

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!

Listas Genéricas: Recursos indispensáveis. Parte 1.

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:

ExemploArtigo01

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!

Olá, the begining.

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!