SlideShare a Scribd company logo
1 of 37
Download to read offline
Atualizando suas habilidades
de programação com a
linguagem C# para ser um
desenvolvedor mais efetivo
DEV303



     Rogério Moraes de Carvalho
     VITA Informática
     @rogeriomc
     rogeriomc.wordpress.com
A evolução da linguagem C#
Evolução                C# 6?         Projeto Roslyn
                           (?)
                       C# 5         Windows Runtime,
                       (2012)       programação assíncrona, ...
                                 Objetos tipados dinamicamente,
                 C# 4            parâmetros opcionais e nomeados,
             (Mar 2010)
                                 covariância e contravariância, …
                          Language Integrated Query (LINQ),
         C# 3.0           expressões Lambda, métodos de
        (Nov 2007)
                          extensão, tipos anônimos, ...
                     Generics, Iterators, tipos parciais,
     C# 2.0          tipos anuláveis, classes estáticas,
    (Nov 2005)
                     métodos anônimos, ...
                 Código gerenciado, linguagem POO,
C# 1.0           suporte nativo a propriedades e
(Fev 2002)
                 eventos, exceções, delegates, ...
Sistema de tipos
Linguagem C# 1.0

   Suporte a duas categorias de tipos
     Tipos por valor
        Estruturas (incluindo os tipos simples)
        Enumerações
     Tipos por referência
        Arrays
        Classes
        Interfaces
        Delegates
   Sistema unificado de tipos
     object é base de todos tipos
     Boxing e Unboxing
Memória e instruções
Linguagem C# 1.0

   Gerenciamento automático de
   memória
     Coletor de lixo (Garbage Collector)
   Instruções inspiradas em C/C++ e
   Java
     Blocos, rótulos, variáveis e expressões
     Laços: while, do...while, for e foreach
     Exceções: try...catch...finally, throw
     Condicionais: if e switch
     checked e unchecked
     using
Herança e membros de classe
Linguagem C# 1.0

   Suporte a herança simples
   Membros possíveis em classes
     Constantes
     Campos
     Métodos
     Propriedades
     Eventos
     Operadores
     Indexadores
     Construtores
     Destrutores
Atributos e outros recursos
Linguagem C# 1.0

   Atributos
     Elementos que permitem fazer
     anotações de forma declarativa
   Namespaces e assemblies
   Versionamento
     Resolve o problema conhecido como
     DLL Hell do modelo COM
Explorando a
linguagem C# 1.0

Rogério Moraes de Carvalho
VITA Informática
Generics e Iterators
Principais novidades da linguagem C# 2.0

   Generics
      Os tipos genéricos permitem um alto
      nível de reutilização de código
         Permite a definição de tipos
         parametrizáveis
         Desempenho melhorado em classes de
         coleções
   Iterators
      Torna simples a definição de como
      um laço foreach vai interagir com o
      conteúdo de uma coleção
Tipos parciais e anuláveis
Principais novidades da linguagem C# 2.0

   Tipos parciais
      As definições de classes, estruturas ou
      interfaces podem ser divididas em
      múltiplos arquivos
         O Visual Studio utiliza esta característica
         para separar o código gerado do código do
         usuário
   Tipos anuláveis
      Permite a uma variável de tipo por
      valor ter um valor indefinido
         Úteis ao se trabalhar com bancos
         de dados ou outras estruturas
Métodos anônimos e ::
Principais novidades da linguagem C# 2.0

   Métodos anônimos
      Tornam possível a passagem de um
      bloco de código como um parâmetro
         Em qualquer lugar em que um delegate é
         esperado
   Qualificador de apelidos de
   namespace
      O novo operador (::) fornece maior
      controle no acesso de membros
      de um namespace
         Habilidade de acessar um
         membro no namespace global
Classes estáticas e mais
Principais novidades da linguagem C# 2.0

   Classes estáticas
      Modo seguro e conveniente de declarar
      uma classe que contém somente
      membros estáticos e não deve ser
      instanciada
         Antes era necessário definir construtores
         de instância privados para não permitir que
         a mesma fosse instanciada
   Permite definir diferentes níveis de
   acesso nos métodos de leitura e
   escrita de uma propriedade
Explorando as novidades da
linguagem C# 2.0

Rogério Moraes de Carvalho
VITA Informática
Principais inovações                                             Expressões de
Principais novidades da linguagem C# 3.0                           consulta

                   var mulheres =
                      from c in contatos
                      where c.Sexo == Sexo.Feminino
                      select new { c.Nome, c.Email };                Árvores de
                                                                     expressão
Tipos implícitos
  em variáveis                     Expressões
     locais                         lambda                         Propriedades
                   var mulheres =                                  automáticas
                    contatos
                    .Where(c => c.Sexo == Sexo.Feminino)             Métodos
                    .Select(c => new {c.Nome, c.Email});             parciais

  Métodos de            Tipos                   Iniciadores de
   extensão                                         objetos        Iniciadores de
                      anônimos
                                                                      coleções
LINQ
Principais novidades da linguagem C# 3.0

     C# 3.0                 VB 9.0             Outras linguagens…



        .NET LINQ (Language INtegrated Query)

  LINQ to     LINQ to       LINQ to        LINQ to       LINQ to
  Objects     DataSets        SQL          Entities        XML

                                                      <agenda>
                                                        <contato>
                                                          <nome>. . . </nome>
                                                          <email> . . . </email>
                                                          <fone/> . . . </fone>
                                                        <contato/>
                                                        ...
                                                      </agenda>


  Objetos                Bancos de dados
                           relacionais                         XML
Explorando as novidades da
linguagem C# 3.0

Rogério Moraes de Carvalho
VITA Informática
Parâmetros opcionais e
nomeados
Principais novidades da linguagem C# 4
  public StreamReader OpenTextFile(
      string path,                      Método primário
      Encoding encoding,
      bool detectEncoding,
      int bufferSize);


    public StreamReader OpenTextFile(
        string path,
        Encoding encoding,                    Sobrecargas
        bool detectEncoding);                 secundárias
    public StreamReader OpenTextFile(
        string path,                     Chamadas ao método
        Encoding encoding);              primário com valores
                                               padrão
    public StreamReader OpenTextFile(
        string path);
Parâmetros opcionais e
nomeados
Principais novidades da linguagem C# 4
  public StreamReader OpenTextFile(
      string path,                           Parâmetros opcionais
      Encoding encoding,= null,
               encoding
      bool detectEncoding,= true,
           detectEncoding
      int bufferSize); 1024);
          bufferSize =                            Argumentos
                                                   nomeados
 OpenTextFile("foo.txt", Encoding.UTF8);

 OpenTextFile("foo.txt", Encoding.UTF8, bufferSize: 4096);

    Argumentos
                          Argumentos                 Argumentos
 nomeados podem
                       avaliados na ordem         nomeados precisam
   aparecer em
                            da escrita              ser os últimos
  qualquer ordem
                                          Argumentos não
       OpenTextFile(
                                        opcionais devem ser
           bufferSize: 4096,
           path: "foo.txt",                especificados
           detectEncoding: false);
Interoperabilidade com COM
Principais novidades da linguagem C# 4

     object nomeArquivo = "Teste.docx";
     object missing = System.Reflection.Missing.Value;

     doc.SaveAs(ref nomeArquivo,
         ref missing, ref missing,   ref   missing,
         ref missing, ref missing,   ref   missing,
         ref missing, ref missing,   ref   missing,
         ref missing, ref missing,   ref   missing,
         ref missing, ref missing,   ref   missing);



                 doc.SaveAs("Teste.docx");


   Parâmetros nomeados e
   opcionais
   Modificador ref opcional
Objetos com tipagem dinâmica
Principais novidades da linguagem C# 4

                                    Calculadora calc = ObterCalculadora();
 object calc = ObterCalculadora();  int soma = calc.Adicionar(10, 20);
 Type tipoCalc = calc.GetType();
 object res =
 tipoCalc.InvokeMember("Adicionar",
     BindingFlags.InvokeMethod, null,
     new object[] { 10, 20 });
                             ScriptObject calc = ObterCalculadora();
 int soma = Convert.ToInt32(res); res = calc.Invoke("Adicionar", 10, 20);
                             object
                             int soma = Convert.ToInt32(res);


 Tipado estaticamente       dynamic calc = ObterCalculadora();
   para ser dinâmico        int sum = calc.Add(10, 20);


                    Coversão                   Invocação dinâmica
                    dinâmica                       do método
Covariância e contravariância
Principais novidades da linguagem C# 4
                                               out = covariância
 public interface IEnumerable<T> T>
                  IEnumerable<out
                                             somente posições de
 {
    IEnumerator<T> GetEnumerator();
                                                     saída
 }
                                            Pode ser tratada como
                                              menos específica
 public interface IEnumerator<T> T>
                  IEnumerator<out
 {
    T Current { get; }      IEnumerable<string> strings = ObterStrings();
    bool MoveNext();        IEnumerable<object> objects = strings;
 }
                                             in = contravariância
                                            somente posições de
 public interface IComparer<T> T>
                  IComparer<in                      entrada
 {
    int Compare(T x, T y);                  Pode ser tratada como
 }                                             mais específica

                        IComparer<object> objComp = ObterComparer();
                        IComparer<string> strComp = objComp;
Explorando as novidades da
linguagem C# 4

Rogério Moraes de Carvalho
VITA Informática
TAP
Principais novidades da linguagem C# 5

   Task-based Asynchronous Pattern
      Novo padrão de programação
      assíncrona no .NET Framework
        Baseado nos tipos Task e Task<TResult>
        do namespace System.Threading.Tasks
      Implementado por um único método
        NomeOperacaoAsync
           Deve retornar Task ou Task<TResult>, baseado
           no tipo de retorno void ou TResult,
           respectivamente, do método síncrono
           correspondente (NomeOperacao)
           Se a classe já tiver um método
           NomeOperacaoAsync, então deve-se
           usar NomeOperacaoTaskAsync
Versão assíncrona via TAP
Principais novidades da linguagem C# 5


Versão síncrona de uma operação
TRetorno NomeOperacao(TParam1 p1, TParam2 p2);

Versão assíncrona da operação
síncrona segundo o padrão TAP
Task<TRetorno> NomeOperacaoAsync(TParam1 p1, TParam2 p2);

Opcionais: cancelamento e progresso
Task<TRetorno> NomeOperacaoAsync(TParam1 p1, TParam2 p2
                [, CancellationToken cancellationToken]
 Cancelamento
                [, IProgress<T> progress]);
   Progresso
Funções assíncronas
Principais novidades da linguagem C# 5

   Tipos de retorno das funções
   assíncronas
      Deve ser void, Task ou Task<TResult>
   Avaliação de funções assíncronas
      Inicialmente idêntica a uma função
      síncrona
      Quando atinge uma expressão await, a
      função assíncrona deve retornar
      imediatamente ao seu chamador
        Se a função assíncrona não for void,
        um objeto Task ou Task<TResult>
        será retornado para o chamador
Windows Runtime
Principais novidades da linguagem C# 5

   Windows Runtime
      Nova biblioteca da próxima versão do
      Windows projetada para ser usada com
      JavaScript, C#, Visual Basic e C++
   Modelo de programação assíncrona
      Interface IAsyncOperation<T>
      O compilador automaticamente
      transforma código normal em uma
      máquina de estado de callback
async e await
Principais novidades da linguagem C# 5

   O suporte a funções assíncronas
   será incorporado à linguagem C# 5
      Novas palavras-chaves: async e await
   A palavra-chave await é usada para
   marcar chamadas assíncronas
      Dispensa a criação de funções de callback
   A palavra-chave async deve estar
   na assinatura de funções que
   fazem chamadas assíncronas
      await somente pode ser usada
      na chamada de funções com
      async na assinatura
async e await
Principais novidades da linguagem C# 5
async Task<decimal> calcularVendasAsync(string arquivo)
{
  using (TextReader leitor = new StreamReader(arquivo))
  {
    string linha = null;
    decimal total = 0M;

        while ((linha = await leitor.ReadLineAsync()) != null)
        {
          string[] campos = linha.Split(';');
          total += decimal.Parse(campos[campos.Length - 1]);
        }
        return total;
    }
}
Explorando as novidades da
linguagem C# 5

Rogério Moraes de Carvalho
VITA Informática
Compiler-as-a-Service (CaaS)
Principais novidades do projeto Roslyn

                               Classe
                                                            Laço
Meta-programação     public             Classe1     Ler-Avaliar-Imprimir

                                 Campo

 Modelo de objetos                                   Incorporação de
  da linguagem       private               campo1
                                                       DSL (Domain
                                  string            Specific Language)



   Código-fonte                                             Assembly
    Código-fonte                                             Assembly
                                                               .NET
     Código-fonte        Compilador                           Assembly
                                                                .NET
                                                                 .NET
APIs para o CaaS
 Principais novidades do projeto Roslyn




                                                                                                                                                                                             Edit and Continue
                                                                                                                                                                          Go To Definition
                                                                                                                                                        Extract Method
                                                                                  Completion List
                                                                 Object Browser




                                                                                                                                       Signature Help
                                                  Navigate To




                                                                                                    References



                                                                                                                          Quick Info
              Formatter



                                      Outlining
                          Colorizer




                                                                                                                 Rename
                                                                                                     Find All
 Serviços
    da
linguagem




 APIs do
compilador




                                                          Symbols                                        Binding and
Pipeline do         Syntax                                Symbol                                                                                                           IL
                                                                                                                                                                          Emit
                    Parser                                                                                  Binder
                                                                                                        Flow Analysis
compilador         Tree API                                 API
                                                          Metadata                                                                                                       Emitter
                                                                                                                                                                          API
                                                                Import
                                                                                                            APIs
Conclusão
A linguagem C# está em evolução constante

   A evolução da linguagem C#
     C# 1.0 em fevereiro de 2002 (.NF 1.0)
     C# 2.0 em novembro de 2005 (.NF 2.0)
     C# 3.0 em novembro de 2007 (.NF 3.5)
     C# 4 em abril de 2010 (.NF 4)
     C# 5 em 2012 (.NF 4.5)
        Suporte ao Windows Runtime
        Facilidade na programação assíncrona
     Projeto Roslyn
        Compiler-as-a-Service (CaaS)
        Visual Studio Roslyn CTP
           Previsão: meados de outubro/2011
Conteúdo Relacionado
  Visual Studio Asynchronous Programming
  msdn.microsoft.com/vstudio/async


  What's New for Visual C# in
  Visual Studio 11 Developer Preview
  go.microsoft.com/fwlink/?LinkId=228087


  MSDN Webcast: C# 5 – Task-based
  Asynchronous Pattern (TAP), async e await
  https://msevents.microsoft.com/CUI/EventDetail.aspx?
  EventID=1032477469
Palestras Relacionadas
  DEV304 – C# e Visual Basic Future: Async
  Made Simple
  Giovanni Bassi (29/09 18:40 às 19:50)


  DEV310 – Visual Studio vNext a nova geração
  Brian Keller, Rodrigo de Carvalho (29/09 11:20 às 12:30)


  WEB302 – Presente e futuro da linguagem de
  programação JavaScript
  Rogério Moraes de Carvalho (29/09 18:40 às 19:50)
Get the free mobile app for your phone
http:/ / gettag.mobi



                                         http://technet.microsoft.com/pt-br




Get the free mobile app for your phone
http:/ / gettag.mobi


                                         http://msdn.microsoft.com/pt-br
Não esqueça de
preencher sua avaliação
        online
www.teched.com.br/avaliacao


              Get the free mobile app for your phone
              http:/ / gettag.mobi
© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
  The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT
                                                 MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

More Related Content

What's hot

Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Marcos Castro
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Rogério Moraes de Carvalho
 
Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoronaldoferraz
 
Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)André Justi
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Andre Nascimento
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHPAugusto Pascutti
 
Curso Java Basico
Curso Java BasicoCurso Java Basico
Curso Java BasicoJoel Lobo
 
Conhecendo Ruby on Rails
Conhecendo Ruby on RailsConhecendo Ruby on Rails
Conhecendo Ruby on RailsSergio Henrique
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2PeslPinguim
 
Boas práticas de programação em C# .NET
Boas práticas de programação em C# .NETBoas práticas de programação em C# .NET
Boas práticas de programação em C# .NETFabiano Roman Beraldi
 
Grupo de estudo - Kotlin
Grupo de estudo - KotlinGrupo de estudo - Kotlin
Grupo de estudo - KotlinAndré Justi
 
Microsoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETMicrosoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETphilipsoares
 
Seminário sobre GO
Seminário sobre GOSeminário sobre GO
Seminário sobre GOgptavares
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaRegis Magalhães
 

What's hot (20)

Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
 
Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programação
 
Csharp
CsharpCsharp
Csharp
 
Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHP
 
Curso Java Basico
Curso Java BasicoCurso Java Basico
Curso Java Basico
 
Conhecendo Ruby on Rails
Conhecendo Ruby on RailsConhecendo Ruby on Rails
Conhecendo Ruby on Rails
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2
 
Boas práticas de programação em C# .NET
Boas práticas de programação em C# .NETBoas práticas de programação em C# .NET
Boas práticas de programação em C# .NET
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Grupo de estudo - Kotlin
Grupo de estudo - KotlinGrupo de estudo - Kotlin
Grupo de estudo - Kotlin
 
es6
es6es6
es6
 
Microsoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETMicrosoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NET
 
Introdução ao Java 5
Introdução ao Java 5Introdução ao Java 5
Introdução ao Java 5
 
C sharp lesson1
C sharp lesson1C sharp lesson1
C sharp lesson1
 
Seminário sobre GO
Seminário sobre GOSeminário sobre GO
Seminário sobre GO
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso Java
 
Compiladores
CompiladoresCompiladores
Compiladores
 

Viewers also liked

TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5Rogério Moraes de Carvalho
 
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)Rogério Moraes de Carvalho
 
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...Rogério Moraes de Carvalho
 
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...Rogério Moraes de Carvalho
 
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF CoreExplorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF CoreRogério Moraes de Carvalho
 
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvemASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvemRogério Moraes de Carvalho
 

Viewers also liked (7)

TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
 
Educação e certificação na Plataforma .NET
Educação e certificação na Plataforma .NETEducação e certificação na Plataforma .NET
Educação e certificação na Plataforma .NET
 
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
 
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
 
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
 
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF CoreExplorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
 
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvemASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
 

Similar to TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo

TDC 2011 Goiânia: Evolução da linguagem de programação C#
TDC 2011 Goiânia: Evolução da linguagem de programação C#TDC 2011 Goiânia: Evolução da linguagem de programação C#
TDC 2011 Goiânia: Evolução da linguagem de programação C#Rogério Moraes de Carvalho
 
TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#Rogério Moraes de Carvalho
 
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#Rogério Moraes de Carvalho
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem PythonNatã Melo
 
Community Launch 2010 - Novos recursos C# 4.0
Community Launch 2010 - Novos recursos C# 4.0Community Launch 2010 - Novos recursos C# 4.0
Community Launch 2010 - Novos recursos C# 4.0Felipe Borges
 
Introdução a programação em python d2
Introdução a programação em python d2Introdução a programação em python d2
Introdução a programação em python d2Moises de Paula
 
Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Elaine Naomi
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Marcelo Barros de Almeida
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução BásicaChristian Perone
 
Automacao com Python.pdf
Automacao com Python.pdfAutomacao com Python.pdf
Automacao com Python.pdfSecont
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)Mario Sergio
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens PooInfogenius
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsHelio Colombe
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
Usp Ufba Ferramentas Analizo Antlr
Usp Ufba Ferramentas Analizo AntlrUsp Ufba Ferramentas Analizo Antlr
Usp Ufba Ferramentas Analizo AntlrCampus Party Brasil
 

Similar to TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo (20)

TDC 2011 Goiânia: Evolução da linguagem de programação C#
TDC 2011 Goiânia: Evolução da linguagem de programação C#TDC 2011 Goiânia: Evolução da linguagem de programação C#
TDC 2011 Goiânia: Evolução da linguagem de programação C#
 
TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#TechEd 2011 Review - Evolução da linguagem de programação C#
TechEd 2011 Review - Evolução da linguagem de programação C#
 
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
TechEd Brasil 2011 Review - Evolução da linguagem de programação C#
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem Python
 
Python2.5.ppt
Python2.5.pptPython2.5.ppt
Python2.5.ppt
 
Community Launch 2010 - Novos recursos C# 4.0
Community Launch 2010 - Novos recursos C# 4.0Community Launch 2010 - Novos recursos C# 4.0
Community Launch 2010 - Novos recursos C# 4.0
 
Introducao ao .Net
Introducao ao .NetIntroducao ao .Net
Introducao ao .Net
 
Introdução a programação em python d2
Introdução a programação em python d2Introdução a programação em python d2
Introdução a programação em python d2
 
Linguagem de programação C# 4 e 5
Linguagem de programação C# 4 e 5Linguagem de programação C# 4 e 5
Linguagem de programação C# 4 e 5
 
C# 4.0
C# 4.0C# 4.0
C# 4.0
 
Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?
 
Ud2
Ud2Ud2
Ud2
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Automacao com Python.pdf
Automacao com Python.pdfAutomacao com Python.pdf
Automacao com Python.pdf
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens Poo
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - Português
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Usp Ufba Ferramentas Analizo Antlr
Usp Ufba Ferramentas Analizo AntlrUsp Ufba Ferramentas Analizo Antlr
Usp Ufba Ferramentas Analizo Antlr
 

More from Rogério Moraes de Carvalho

TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaTDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaRogério Moraes de Carvalho
 
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoredotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoreRogério Moraes de Carvalho
 
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroRogério Moraes de Carvalho
 
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework CoreUm novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework CoreRogério Moraes de Carvalho
 
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7Rogério Moraes de Carvalho
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Rogério Moraes de Carvalho
 
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Rogério Moraes de Carvalho
 
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...Rogério Moraes de Carvalho
 
Uma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programaçãoUma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programaçãoRogério Moraes de Carvalho
 
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...Rogério Moraes de Carvalho
 
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...Rogério Moraes de Carvalho
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...Rogério Moraes de Carvalho
 
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...Rogério Moraes de Carvalho
 
MVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo realMVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo realRogério Moraes de Carvalho
 
MVP Virtual Conference 2013: Suporte a padrões Web
MVP Virtual Conference 2013: Suporte a padrões WebMVP Virtual Conference 2013: Suporte a padrões Web
MVP Virtual Conference 2013: Suporte a padrões WebRogério Moraes de Carvalho
 

More from Rogério Moraes de Carvalho (20)

Docker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no AzureDocker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no Azure
 
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaTDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
 
Tecnologias XML e XML no SQL Server 2016
Tecnologias XML eXML no SQL Server 2016Tecnologias XML eXML no SQL Server 2016
Tecnologias XML e XML no SQL Server 2016
 
Cebraspe 2016: .NET Core e ASP.NET Core
Cebraspe 2016: .NET Core e ASP.NET CoreCebraspe 2016: .NET Core e ASP.NET Core
Cebraspe 2016: .NET Core e ASP.NET Core
 
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoredotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
 
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
 
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework CoreUm novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
 
Suporte XML nativo no SQL Server 2014/2016
Suporte XML nativo no SQL Server 2014/2016Suporte XML nativo no SQL Server 2014/2016
Suporte XML nativo no SQL Server 2014/2016
 
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
 
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
 
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
 
Uma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programaçãoUma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programação
 
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
 
`
``
`
 
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
 
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
 
MVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo realMVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo real
 
MVP Virtual Conference 2013: Suporte a padrões Web
MVP Virtual Conference 2013: Suporte a padrões WebMVP Virtual Conference 2013: Suporte a padrões Web
MVP Virtual Conference 2013: Suporte a padrões Web
 

Recently uploaded

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 

Recently uploaded (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 

TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo

  • 1.
  • 2. Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo DEV303 Rogério Moraes de Carvalho VITA Informática @rogeriomc rogeriomc.wordpress.com
  • 3. A evolução da linguagem C# Evolução C# 6? Projeto Roslyn (?) C# 5 Windows Runtime, (2012) programação assíncrona, ... Objetos tipados dinamicamente, C# 4 parâmetros opcionais e nomeados, (Mar 2010) covariância e contravariância, … Language Integrated Query (LINQ), C# 3.0 expressões Lambda, métodos de (Nov 2007) extensão, tipos anônimos, ... Generics, Iterators, tipos parciais, C# 2.0 tipos anuláveis, classes estáticas, (Nov 2005) métodos anônimos, ... Código gerenciado, linguagem POO, C# 1.0 suporte nativo a propriedades e (Fev 2002) eventos, exceções, delegates, ...
  • 4. Sistema de tipos Linguagem C# 1.0 Suporte a duas categorias de tipos Tipos por valor Estruturas (incluindo os tipos simples) Enumerações Tipos por referência Arrays Classes Interfaces Delegates Sistema unificado de tipos object é base de todos tipos Boxing e Unboxing
  • 5. Memória e instruções Linguagem C# 1.0 Gerenciamento automático de memória Coletor de lixo (Garbage Collector) Instruções inspiradas em C/C++ e Java Blocos, rótulos, variáveis e expressões Laços: while, do...while, for e foreach Exceções: try...catch...finally, throw Condicionais: if e switch checked e unchecked using
  • 6. Herança e membros de classe Linguagem C# 1.0 Suporte a herança simples Membros possíveis em classes Constantes Campos Métodos Propriedades Eventos Operadores Indexadores Construtores Destrutores
  • 7. Atributos e outros recursos Linguagem C# 1.0 Atributos Elementos que permitem fazer anotações de forma declarativa Namespaces e assemblies Versionamento Resolve o problema conhecido como DLL Hell do modelo COM
  • 8. Explorando a linguagem C# 1.0 Rogério Moraes de Carvalho VITA Informática
  • 9. Generics e Iterators Principais novidades da linguagem C# 2.0 Generics Os tipos genéricos permitem um alto nível de reutilização de código Permite a definição de tipos parametrizáveis Desempenho melhorado em classes de coleções Iterators Torna simples a definição de como um laço foreach vai interagir com o conteúdo de uma coleção
  • 10. Tipos parciais e anuláveis Principais novidades da linguagem C# 2.0 Tipos parciais As definições de classes, estruturas ou interfaces podem ser divididas em múltiplos arquivos O Visual Studio utiliza esta característica para separar o código gerado do código do usuário Tipos anuláveis Permite a uma variável de tipo por valor ter um valor indefinido Úteis ao se trabalhar com bancos de dados ou outras estruturas
  • 11. Métodos anônimos e :: Principais novidades da linguagem C# 2.0 Métodos anônimos Tornam possível a passagem de um bloco de código como um parâmetro Em qualquer lugar em que um delegate é esperado Qualificador de apelidos de namespace O novo operador (::) fornece maior controle no acesso de membros de um namespace Habilidade de acessar um membro no namespace global
  • 12. Classes estáticas e mais Principais novidades da linguagem C# 2.0 Classes estáticas Modo seguro e conveniente de declarar uma classe que contém somente membros estáticos e não deve ser instanciada Antes era necessário definir construtores de instância privados para não permitir que a mesma fosse instanciada Permite definir diferentes níveis de acesso nos métodos de leitura e escrita de uma propriedade
  • 13. Explorando as novidades da linguagem C# 2.0 Rogério Moraes de Carvalho VITA Informática
  • 14. Principais inovações Expressões de Principais novidades da linguagem C# 3.0 consulta var mulheres = from c in contatos where c.Sexo == Sexo.Feminino select new { c.Nome, c.Email }; Árvores de expressão Tipos implícitos em variáveis Expressões locais lambda Propriedades var mulheres = automáticas contatos .Where(c => c.Sexo == Sexo.Feminino) Métodos .Select(c => new {c.Nome, c.Email}); parciais Métodos de Tipos Iniciadores de extensão objetos Iniciadores de anônimos coleções
  • 15. LINQ Principais novidades da linguagem C# 3.0 C# 3.0 VB 9.0 Outras linguagens… .NET LINQ (Language INtegrated Query) LINQ to LINQ to LINQ to LINQ to LINQ to Objects DataSets SQL Entities XML <agenda> <contato> <nome>. . . </nome> <email> . . . </email> <fone/> . . . </fone> <contato/> ... </agenda> Objetos Bancos de dados relacionais XML
  • 16. Explorando as novidades da linguagem C# 3.0 Rogério Moraes de Carvalho VITA Informática
  • 17. Parâmetros opcionais e nomeados Principais novidades da linguagem C# 4 public StreamReader OpenTextFile( string path, Método primário Encoding encoding, bool detectEncoding, int bufferSize); public StreamReader OpenTextFile( string path, Encoding encoding, Sobrecargas bool detectEncoding); secundárias public StreamReader OpenTextFile( string path, Chamadas ao método Encoding encoding); primário com valores padrão public StreamReader OpenTextFile( string path);
  • 18. Parâmetros opcionais e nomeados Principais novidades da linguagem C# 4 public StreamReader OpenTextFile( string path, Parâmetros opcionais Encoding encoding,= null, encoding bool detectEncoding,= true, detectEncoding int bufferSize); 1024); bufferSize = Argumentos nomeados OpenTextFile("foo.txt", Encoding.UTF8); OpenTextFile("foo.txt", Encoding.UTF8, bufferSize: 4096); Argumentos Argumentos Argumentos nomeados podem avaliados na ordem nomeados precisam aparecer em da escrita ser os últimos qualquer ordem Argumentos não OpenTextFile( opcionais devem ser bufferSize: 4096, path: "foo.txt", especificados detectEncoding: false);
  • 19. Interoperabilidade com COM Principais novidades da linguagem C# 4 object nomeArquivo = "Teste.docx"; object missing = System.Reflection.Missing.Value; doc.SaveAs(ref nomeArquivo, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); doc.SaveAs("Teste.docx"); Parâmetros nomeados e opcionais Modificador ref opcional
  • 20. Objetos com tipagem dinâmica Principais novidades da linguagem C# 4 Calculadora calc = ObterCalculadora(); object calc = ObterCalculadora(); int soma = calc.Adicionar(10, 20); Type tipoCalc = calc.GetType(); object res = tipoCalc.InvokeMember("Adicionar", BindingFlags.InvokeMethod, null, new object[] { 10, 20 }); ScriptObject calc = ObterCalculadora(); int soma = Convert.ToInt32(res); res = calc.Invoke("Adicionar", 10, 20); object int soma = Convert.ToInt32(res); Tipado estaticamente dynamic calc = ObterCalculadora(); para ser dinâmico int sum = calc.Add(10, 20); Coversão Invocação dinâmica dinâmica do método
  • 21. Covariância e contravariância Principais novidades da linguagem C# 4 out = covariância public interface IEnumerable<T> T> IEnumerable<out somente posições de { IEnumerator<T> GetEnumerator(); saída } Pode ser tratada como menos específica public interface IEnumerator<T> T> IEnumerator<out { T Current { get; } IEnumerable<string> strings = ObterStrings(); bool MoveNext(); IEnumerable<object> objects = strings; } in = contravariância somente posições de public interface IComparer<T> T> IComparer<in entrada { int Compare(T x, T y); Pode ser tratada como } mais específica IComparer<object> objComp = ObterComparer(); IComparer<string> strComp = objComp;
  • 22. Explorando as novidades da linguagem C# 4 Rogério Moraes de Carvalho VITA Informática
  • 23. TAP Principais novidades da linguagem C# 5 Task-based Asynchronous Pattern Novo padrão de programação assíncrona no .NET Framework Baseado nos tipos Task e Task<TResult> do namespace System.Threading.Tasks Implementado por um único método NomeOperacaoAsync Deve retornar Task ou Task<TResult>, baseado no tipo de retorno void ou TResult, respectivamente, do método síncrono correspondente (NomeOperacao) Se a classe já tiver um método NomeOperacaoAsync, então deve-se usar NomeOperacaoTaskAsync
  • 24. Versão assíncrona via TAP Principais novidades da linguagem C# 5 Versão síncrona de uma operação TRetorno NomeOperacao(TParam1 p1, TParam2 p2); Versão assíncrona da operação síncrona segundo o padrão TAP Task<TRetorno> NomeOperacaoAsync(TParam1 p1, TParam2 p2); Opcionais: cancelamento e progresso Task<TRetorno> NomeOperacaoAsync(TParam1 p1, TParam2 p2 [, CancellationToken cancellationToken] Cancelamento [, IProgress<T> progress]); Progresso
  • 25. Funções assíncronas Principais novidades da linguagem C# 5 Tipos de retorno das funções assíncronas Deve ser void, Task ou Task<TResult> Avaliação de funções assíncronas Inicialmente idêntica a uma função síncrona Quando atinge uma expressão await, a função assíncrona deve retornar imediatamente ao seu chamador Se a função assíncrona não for void, um objeto Task ou Task<TResult> será retornado para o chamador
  • 26. Windows Runtime Principais novidades da linguagem C# 5 Windows Runtime Nova biblioteca da próxima versão do Windows projetada para ser usada com JavaScript, C#, Visual Basic e C++ Modelo de programação assíncrona Interface IAsyncOperation<T> O compilador automaticamente transforma código normal em uma máquina de estado de callback
  • 27. async e await Principais novidades da linguagem C# 5 O suporte a funções assíncronas será incorporado à linguagem C# 5 Novas palavras-chaves: async e await A palavra-chave await é usada para marcar chamadas assíncronas Dispensa a criação de funções de callback A palavra-chave async deve estar na assinatura de funções que fazem chamadas assíncronas await somente pode ser usada na chamada de funções com async na assinatura
  • 28. async e await Principais novidades da linguagem C# 5 async Task<decimal> calcularVendasAsync(string arquivo) { using (TextReader leitor = new StreamReader(arquivo)) { string linha = null; decimal total = 0M; while ((linha = await leitor.ReadLineAsync()) != null) { string[] campos = linha.Split(';'); total += decimal.Parse(campos[campos.Length - 1]); } return total; } }
  • 29. Explorando as novidades da linguagem C# 5 Rogério Moraes de Carvalho VITA Informática
  • 30. Compiler-as-a-Service (CaaS) Principais novidades do projeto Roslyn Classe Laço Meta-programação public Classe1 Ler-Avaliar-Imprimir Campo Modelo de objetos Incorporação de da linguagem private campo1 DSL (Domain string Specific Language) Código-fonte Assembly Código-fonte Assembly .NET Código-fonte Compilador Assembly .NET .NET
  • 31. APIs para o CaaS Principais novidades do projeto Roslyn Edit and Continue Go To Definition Extract Method Completion List Object Browser Signature Help Navigate To References Quick Info Formatter Outlining Colorizer Rename Find All Serviços da linguagem APIs do compilador Symbols Binding and Pipeline do Syntax Symbol IL Emit Parser Binder Flow Analysis compilador Tree API API Metadata Emitter API Import APIs
  • 32. Conclusão A linguagem C# está em evolução constante A evolução da linguagem C# C# 1.0 em fevereiro de 2002 (.NF 1.0) C# 2.0 em novembro de 2005 (.NF 2.0) C# 3.0 em novembro de 2007 (.NF 3.5) C# 4 em abril de 2010 (.NF 4) C# 5 em 2012 (.NF 4.5) Suporte ao Windows Runtime Facilidade na programação assíncrona Projeto Roslyn Compiler-as-a-Service (CaaS) Visual Studio Roslyn CTP Previsão: meados de outubro/2011
  • 33. Conteúdo Relacionado Visual Studio Asynchronous Programming msdn.microsoft.com/vstudio/async What's New for Visual C# in Visual Studio 11 Developer Preview go.microsoft.com/fwlink/?LinkId=228087 MSDN Webcast: C# 5 – Task-based Asynchronous Pattern (TAP), async e await https://msevents.microsoft.com/CUI/EventDetail.aspx? EventID=1032477469
  • 34. Palestras Relacionadas DEV304 – C# e Visual Basic Future: Async Made Simple Giovanni Bassi (29/09 18:40 às 19:50) DEV310 – Visual Studio vNext a nova geração Brian Keller, Rodrigo de Carvalho (29/09 11:20 às 12:30) WEB302 – Presente e futuro da linguagem de programação JavaScript Rogério Moraes de Carvalho (29/09 18:40 às 19:50)
  • 35. Get the free mobile app for your phone http:/ / gettag.mobi http://technet.microsoft.com/pt-br Get the free mobile app for your phone http:/ / gettag.mobi http://msdn.microsoft.com/pt-br
  • 36. Não esqueça de preencher sua avaliação online www.teched.com.br/avaliacao Get the free mobile app for your phone http:/ / gettag.mobi
  • 37. © 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.