Novos recursos no C#3.0

12/14/2007 12:22:00 PM By Felipe Pessoto

Vou falar sobre alguns novos recursos que vieram na nova versão do C#.

Começando pelas Propriedades Automáticas.
Antigamente quando a gente criava as propriedades das nossas classes, faziamos um código como esse:

7 public class Carro

8 {

9 private string _modelo;

10 private string _marca;

11 private int _ano;

12 private string _cor;

13

14 public string Modelo

15 {

16 get { return _modelo; }

17 set { _modelo = value; }

18 }

19

20 public string Marca

21 {

22 get { return _marca; }

23 set { _marca = value; }

24 }

25

26 public int Ano

27 {

28 get { return _ano; }

29 set { _ano = value; }

30 }

31

32 public string Cor

33 {

34 get { return _cor; }

35 set { _cor = value; }

36 }

37 }

Como você pode notar, as propriedades não tem nenhum tratamento lógico, servindo como se fosse um acesso direto aos campos. Então porque não expor os campos diretamente? Basicamente porque no futuro você pode querer implementar algum tratamento, assim se você tiver usado propriedades, as classes que usam suas propriedades não precisarão ser recompiladas.

Sendo muito comum o uso de propriedades como as que vimos acima, no C#3.0 foi implementado as Propriedades Automáticas, que substituem esse código "padrão". O código anterior ficaria assim:

7 public class Carro

8 {

9 public string Modelo { get; set; }

10 public string Marca { get; set; }

11 public int Ano { get; set; }

12 public string Cor { get; set; }

13 }

Quando o compilador encontrar um get/set vazio como estes, ele automáticamente criará os campos privados para a classe e implementará as propriedades públicas get/set.

Diferentemente de criar campos públicos, poderemos no futuro criar as implementações lógicas, sem ter que mudar nenhum componente externo que referencia nossa classe.

Inicializadores de Objetos

Usamos muitas propriedades quando estamos programando e é muito comum códigos como esse:


13 Carro car = new Carro();

14 car.Modelo = "Punto";

15 car.Marca = "Fiat";

16 car.Ano = 2007;

17 car.Cor = "Azul";

Agora podemos escrever isso de outra forma, mais simples e concisa, usando os "object Initializers". Seu código pode ser escrito assim:


Carro car = new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Azul" };


E o compilador irá se encarregar de instanciar a classe e setar as propriedades.

É interessante que podemos inicializar objetos aninhados, como mostrado:


Carro car = new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Azul", Fabric = new Fabricante { Nome = "Industria Metal", CNPJ = "12312" } };

Inicializadores de Coleção

Os inicializadores de objeto também facilitam a maneira como adicionamos itens a uma coleção. Se quisermos adicionar objetos Carro a uma List devemos escrever o seguinte código:



14 List<Carro> Carros = new List<Carro>();

15

16 Carros.Add(new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Azul" });

17 Carros.Add(new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Vermelho" });

18 Carros.Add(new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Preto" });


Economizando muitas linhas de código. E podemos diminuir ainda mais, usando Inicializadores de coleção, não precisamos escrever vários métodos Add:


14 List<Carro> Carros = new List<Carro>{

15 new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Azul" },

16 new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Vermelho" },

17 new Carro { Modelo = "Punto", Marca = "Fiat", Ano = 2007, Cor = "Preto" }

18 };

LINQ to Object

12/12/2007 12:54:00 PM By Felipe Pessoto

Agora com o Visual Studio 2008 estou fazendo alguns testes com os novos recursos do Framework 3.0 e 3.5.

Vou colocar aqui um exemplo de página que mostra os números pares, usando o LINQ e como fonte de dados um array.

Crie um novo WebSite, sem esquecer de usar o Framework 3.5:

Adicione um Button e um Label:

De dois cliques no Button para gerar o método do evento Click. Dentro do método insira o seguinte código(usei comentários para explicar o código):

 

//Nossa fonte de dados
int[] numeros = { 1, 2, 3, 4, 5, 6 };

//Query do Linq, depois da keyword in, especificamos a fonte de dados
//Usamos where para filtrar os resultados
//retornando só os que tiverem resto da divisão por 2 igual à 0
//o select serve para o Linq saber o que deve retornar
//daqueles que passarem pelo filtro
//no caso o proprio numero, mas poderiamos
//por exemplo retornar num.ToString()
var query = from num in numeros
where num % 2 == 0
select num;

//Passa cada numero retornado pro Label
//Perceba que a variavel query é definida como IEnumerable<int>
//var é um novo recurso do Framework 3.5
//O tipo da variável é definido na compilação
//A variavel continua sendo tipada
foreach (var numero in query)
{
lblResultado.Text += numero.ToString() + "<br>";
}

Agora tecle F5 para abrir o website e clique no Button, vai aparecer os números 2, 4 e 6:

Passei no Exame!!!!!!!

12/11/2007 1:27:00 AM By Felipe Pessoto

Depois de meses estudando, consegui passar! Aproveitei que tinha 30% de desconto e direito a segunda chance, mas passei de primeira, apesar de nem eu acreditar que conseguiria.

Agora começa a maratona de estudos pro 70-526 que é uma especialização para windows. 

Caso alguém queira saber o que usei como estudo foi só o livro Self-Paced Training Kit pro exame 70-536, que infelizmente é em inglês, mas é bem fácil de entender, exige apenas inglês técnico. Antes também li o C# How to Program, mas ele não foca em certificação, serve mais como base.

Usando CopySourceAsHtml no Visual Studio 2008

12/10/2007 2:35:00 AM By Felipe Pessoto

Esta ferramente é muito interessante pra quem costuma inserir trechos de códigos no blog ou site.

Infelizmente o instalador dele só está preparado para o VS2005, mas você pode usá-lo no VS2008.

Para isso faça o download desse arquivo zip.

Extraia os 3 arquivos na pasta C:\Documents and Settings\<USUARIO>\Meus documentos\Visual Studio 2008\Addins
Talvez a pasta Addins não exista, então você deve cria-la.

Depois de extraidos ele já está pronto pra usar. Só para confirmar, clique em Tools -> Add-in Manager e verifique se o CopySourceAsHtml está marcado.

Agora é só selecionar o trecho desejado e clicar em Copy As Html...

E o resultado é muito bom:

 

 


   19 NumberFormatInfo NumberInfo = new NumberFormatInfo();


   20 NumberInfo.CurrencySymbol = "@";


   21 NumberInfo.CurrencyDecimalDigits = 4;


   22 DemoBuilder.NumberFormat = NumberInfo;

 

Aqui no blog não vai sair muito bem por causa do pequeno espaço horizontal, mas o html gerado fica com o visual perfeitamente igual Visual Studio.

Segunda-feira, o dia do exame

12/8/2007 4:15:00 PM By Felipe Pessoto

Consegui marcar um exame 70-536 pra MCTS na segunda-feita, dia 10, depois de muitos problemas em achar um cartão internacional....que era a única forma de fazer o exame em Santos.

Fiz vários simulados do Training Kit e acerto sempre mais de 70%, mas é pouco =/ vou estudar esse fim de semana pra quem sabe passar de primeira, preciso de 80%.

Ainda bem que peguei a promoção segunda chance, assim posso ver como me saio no primeiro exame e saber onde estudar mais.

Alem da segunda chance também ganhei 30% de desconto =). Foram 56 dólares pelo exame com segunda chance! A Microsoft ta facilitando bastante no quesito financeiro.

 

Se você também ta querendo fazer o exame, pode entrar no site da promoção: http://www.microsoft.com/brasil/certifique/certiseguro/ e pegar um voucher, é simples, só clicar no link correspondente ao mês que quer fazer a prova, Dezembro da direito à 30% e Janeiro à 20%.

Pra mim uma certificação MCTS vale mais que a própria faculdade, que não significa nada, pois pra ter um diploma, basta pagar a mensalidade e empurrar com a barriga, a escolha é sua se está lá pra aprender, ou pra agradar seu pai....ou quem sabe ter direito a uma cela especial heheh.

Depois posto o resultado, estou confiante, mas não tenho certeza se passo de primeira. Boa sorte pra mim.