2. Quem é Paulo Ortins ?
• Trabalho com software desde 2010
• MTM Tecnologia
• Comecei a me envolver com comunidade em 2011
• Aprendiz de blogueiro (pauloortins.wordpress.com)
• Aprendiz de promoter (#horaextra e Coding Dojos)
• Twitter : @pauloortins
• Email : paulo.ortins@gmail.com
3. Quem é o C# ?
• Linguagem de programação criada pela MS no início dos anos
2000.
• Atualmente na versão 5.0
• Orientada a objetos, mas tem características de linguagem
funcional.
• Fortemente Tipada embora tenha suporte a variáveis
dinâmicas
4. Como surgiu a idéia dessa palestra ?
• Comunidade C# pouco atuante nos
eventos
• Comunidade, como um todo, não tinha
muito interesse por C#
12. Mono
• É uma implementação open source do .NET Framework
baseado nos padrões do ECMA para C# e para a CLR.
• Permite rodar o .NET em ambiente Linux, Microsoft
Windows, Mac OS X, BSD, and Sun Solaris, Nintendo Wii, Sony
PlayStation 3 e Apple iPhone.
13. Histórico
• Criado por Miguel de Icaza em 2001, como uma forma de
desenvolver aplicações desktop para linux utilizando C#.
• Devido a um problema em desenvolver um cliente de email
em C.
14. Mono
• O mono hoje suporta praticamente todo o framework .NET
(até a versão 4.0), exceto WPF, Entity Framework, WF e WCF
(possui uma versão limitada).
• Usamos o mono em nossos devices sem nem sabermos !
22. MS e Comunidade
• Programa de MVPs
• MS tem se esforçado para se aproximar da comunidade
• Suporte para outras linguagens rodarem no framework .NET
23. MVPs
• Programa utilizado para premiar os profissionais que mais se
destacaram junto a comunidade durante o ano.
• Manter um contato entre a comunidade e o pessoal da MS.
24. MS e Comunidade
• Apoio a projetos open source:
• jQuery
• Knockout.js
• SignalR
• Reactive Extensions
• NuGet Package Manager
• MVC4, Web Api, Razor, e o EntityFramework vão ser
desenvolvidos junto com a comunidade em um repositório Git
• Codeplex
25. MS e Comunidade
• Suporte oficial para plataformas open source no Azure
• Ruby
• PHP
• Java
• Em abril apareceu na lista das 20 empresas que mais
contribuíram com o kernel do Linux
26. Linguagens que rodam no
framework .NET
• Boo
• IronPython
• IronRuby
• F#
• J#
• IKVM.NET
27. OK, o C# é legal !
• O C# está aberto a comunidade.
• Eu posso usar C# no meu MacOS e no meu Linux.
• Mas por que aprender C# ?
28. Features Legais da Linguagem
• Propriedades
• Inferência de Tipos
• Inicialização Simplificada
• Extension Methods
• LINQ
• Variáveis Dinâmicas
• Parâmetros Opcionais/Nomeados
• SignalR
29. Propriedades
public class Linguagem {
private String nome;
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
31. Inferência de Tipos
int numeroInteiro = 1;
List<string> lst = new List<string>();
E se pudessemos fazer desse jeito ?
var numeroInteiro = 1;
var lst = new List<string>();
32. E nesse caso ?
Dictionary<string, List<Person>> hashMap = new
Dictionary<string, List<Person>>();
var hashMap = new Dictionary<string,
List<Person>>();
33. Inicialização Simplificada
Person person = new Person();
person.Nome = "Paulo Ortins";
person.Idade = 23;
E se pudessemos fazer...
var person = new Person() {Nome = "Paulo
Ortins", Idade = 23};
34. Inicialização Simplificada
List<Person> lst = new List<Person>();
Person paulo = new Person();
paulo.Nome = "Paulo Ortins";
paulo.Idade = 23;
Person obama = new Person();
obama.Nome = "Barack Obama";
obama.Idade = 51;
lst.Add(paulo);
lst.Add(obama);
35. Inicialização Simplificada
var lst = new List<Person>()
{
new Person(){Nome = "Paulo Ortins", Idade =
23},
new Person(){Nome = "Barack Obama", Idade =
51}
};
36. Extension Methods
• Método para obter os três últimos caracteres de uma string.
public class StringUtil {
public static String
ObterUltimosCaracteres(String string,
int numeroCaracteres)
{
int ultimaPosicao = string.length();
return string.substring(ultimaPosicao -
numeroCaracteres , ultimaPosicao);
}
}
StringUtil.ObterUltimosCaracteres("testando",
3);
37. Extension Methods
static string ObterUltimosCaracteres(
this string s, int numeroCaracteres)
{
return s.Substring(
s.Length - numeroCaracteres,
numeroCaracteres);
}
"testando".ObterUltimosCaracteres(3);
38. Extension Methods
• Com um pouco de criatividade...
Pessoas
.ComIdadeIgualA(30)
.NascidasNo("Brasil")
.MorandoEm("Miami");
39. LINQ
• Language Integrated Query
• Feature que nos permite fazer consultas sql-like em coleções:
• Em memória
• Em SQL
• Em XML
40. Exemplos de Uso do LINQ
• Buscar adultos em uma coleção de pessoas
// Usando Query Expressions
var adultos = from pessoa in lstPerson
where pessoa.Idade > 18
select pessoa;
// Usando Lambda Expressions/Dot Notation
var adultos = lstPerson.Where(x => x.Idade > 18);
41. Exemplos de Uso do LINQ
public static IEnumerable<TSource>
Where<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate
);
42. Exemplos de Uso do LINQ
• Ordenar uma coleção de pessoas pela idade
// Query Expressions
var pessoas = from pessoa in lstPerson
orderby pessoa.Idade
select pessoa;
// Lambda Expressions/Dot Notation
var pessoas = lstPerson.OrderBy(x => x.Idade);
43. Exemplos de Uso do LINQ
• Agrupar pessoas por idade
// Query Expressions
var pessoas = from pessoa in lstPerson
group pessoa by pessoa.Idade;
// Lambda Expressions/Dot Notation
var pessoas = lstPerson.GroupBy(x => x.Idade);
44. LINQ to SQL
• Se relaciona muito bem com frameworks ORM como
Nhibernate e Entity.
• Permite usar código C# para fazer consultas no banco.
45. Exemplo Linq to SQL
var adultos = lstPerson
.Where(x => x.Idade > 18);
SELECT * FROM People where Idade > 18
46. Exemplo Linq to SQL
var pessoas = lstPerson.OrderBy(x =>
x.Idade);
SELECT * FROM People Order by Idade
47. Variáveis Dinâmicas
• C# implementa variáveis do tipo dynamic, que são variáveis
que não possuem tipo definido em tempo de compilação
• Interoperabilidade com as outras linguagens que rodam na
CLR.
dynamic variavel = "ola";
variavel.Soletrar();
variavel = 10;
variavel.Somar();
53. Concluindo...
• Objetivo da palestra era mostrar que:
• a comunidade está bem movimentada, existem muitos projetos
open source rolando, e que podem ser copiados para outras
plataformas.
• a stack .NET tem evoluido bastante nos últimos anos
• Obrigado !
• E não esqueçam de comparecer ao #horaextra todas as
segundas, 18h30 na Livraria Saraiva do Shopping Iguatemi