Entity Framework 6 [MVP ShowCast 2013 - DEV - Plataforma de dados & Business Intelligence (DEV)]
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para...
-
Upload
rogerio-moraes-de-carvalho -
Category
Technology
-
view
2.897 -
download
1
description
Transcript of TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para...
![Page 1: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/1.jpg)
![Page 2: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/2.jpg)
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
![Page 3: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/3.jpg)
A evolução da linguagem C# Evolução
C# 1.0 (Fev 2002)
C# 2.0 (Nov 2005)
C# 3.0 (Nov 2007)
Código gerenciado, linguagem POO,
suporte nativo a propriedades e
eventos, exceções, delegates, ...
Generics, Iterators, tipos parciais,
tipos anuláveis, classes estáticas,
métodos anônimos, ...
Language Integrated Query (LINQ),
expressões Lambda, métodos de
extensão, tipos anônimos, ...
C# 4 (Mar 2010)
Objetos tipados dinamicamente,
parâmetros opcionais e nomeados,
covariância e contravariância, …
C# 5 (2012)
Windows Runtime,
programação assíncrona, ...
C# 6? (?)
Projeto Roslyn
![Page 4: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/4.jpg)
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
![Page 5: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/5.jpg)
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
![Page 6: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/6.jpg)
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
![Page 7: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/7.jpg)
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
![Page 8: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/8.jpg)
Explorando a linguagem C# 1.0
Rogério Moraes de Carvalho VITA Informática
![Page 9: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/9.jpg)
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
![Page 10: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/10.jpg)
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
![Page 11: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/11.jpg)
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
![Page 12: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/12.jpg)
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
![Page 13: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/13.jpg)
Explorando as novidades da linguagem C# 2.0
Rogério Moraes de Carvalho VITA Informática
![Page 14: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/14.jpg)
Principais inovações Principais novidades da linguagem C# 3.0
var mulheres = from c in contatos where c.Sexo == Sexo.Feminino select new { c.Nome, c.Email };
var mulheres = contatos .Where(c => c.Sexo == Sexo.Feminino) .Select(c => new {c.Nome, c.Email});
Métodos de extensão
Expressões lambda
Expressões de consulta
Iniciadores de objetos
Tipos anônimos
Árvores de expressão
Propriedades automáticas
Métodos parciais
Tipos implícitos em variáveis
locais
Iniciadores de coleções
![Page 15: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/15.jpg)
LINQ Principais novidades da linguagem C# 3.0
Objetos
<agenda> <contato> <nome>. . . </nome> <email> . . . </email> <fone/> . . . </fone> <contato/> . . . </agenda>
XML
.NET LINQ (Language INtegrated Query)
C# 3.0 VB 9.0 Outras linguagens…
Bancos de dados relacionais
LINQ to Objects
LINQ to SQL
LINQ to XML
LINQ to Entities
LINQ to DataSets
![Page 16: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/16.jpg)
Explorando as novidades da linguagem C# 3.0
Rogério Moraes de Carvalho VITA Informática
![Page 17: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/17.jpg)
Parâmetros opcionais e nomeados Principais novidades da linguagem C# 4
public StreamReader OpenTextFile( string path, Encoding encoding, bool detectEncoding, int bufferSize);
public StreamReader OpenTextFile( string path, Encoding encoding, bool detectEncoding); public StreamReader OpenTextFile( string path, Encoding encoding); public StreamReader OpenTextFile( string path);
Método primário
Sobrecargas secundárias
Chamadas ao método primário com valores
padrão
![Page 18: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/18.jpg)
Parâmetros opcionais e nomeados Principais novidades da linguagem C# 4
public StreamReader OpenTextFile( string path, Encoding encoding, bool detectEncoding, int bufferSize);
public StreamReader OpenTextFile( string path, Encoding encoding = null, bool detectEncoding = true, int bufferSize = 1024);
Parâmetros opcionais
OpenTextFile("foo.txt", Encoding.UTF8);
OpenTextFile("foo.txt", Encoding.UTF8, bufferSize: 4096);
Argumentos nomeados
OpenTextFile( bufferSize: 4096, path: "foo.txt", detectEncoding: false);
Argumentos nomeados precisam
ser os últimos
Argumentos não opcionais devem ser
especificados
Argumentos avaliados na ordem
da escrita
Argumentos nomeados podem
aparecer em qualquer ordem
![Page 19: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/19.jpg)
Interoperabilidade com COM Principais novidades da linguagem C# 4
Parâmetros nomeados e opcionais
Modificador ref opcional
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");
![Page 20: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/20.jpg)
Objetos com tipagem dinâmica Principais novidades da linguagem C# 4
object calc = ObterCalculadora(); Type tipoCalc = calc.GetType(); object res = tipoCalc.InvokeMember("Adicionar", BindingFlags.InvokeMethod, null, new object[] { 10, 20 }); int soma = Convert.ToInt32(res);
ScriptObject calc = ObterCalculadora(); object res = calc.Invoke("Adicionar", 10, 20); int soma = Convert.ToInt32(res);
dynamic calc = ObterCalculadora(); int sum = calc.Add(10, 20);
Tipado estaticamente para ser dinâmico
Invocação dinâmica do método
Coversão dinâmica
Calculadora calc = ObterCalculadora(); int soma = calc.Adicionar(10, 20);
![Page 21: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/21.jpg)
Covariância e contravariância Principais novidades da linguagem C# 4
public interface IEnumerable<T> { IEnumerator<T> GetEnumerator(); }
public interface IEnumerator<T> { T Current { get; } bool MoveNext(); }
public interface IEnumerable<out T> { IEnumerator<T> GetEnumerator(); }
public interface IEnumerator<out T> { T Current { get; } bool MoveNext(); }
out = covariância somente posições de
saída
IEnumerable<string> strings = ObterStrings(); IEnumerable<object> objects = strings;
Pode ser tratada como menos específica
public interface IComparer<T> { int Compare(T x, T y); }
public interface IComparer<in T> { int Compare(T x, T y); }
IComparer<object> objComp = ObterComparer(); IComparer<string> strComp = objComp;
in = contravariância somente posições de
entrada
Pode ser tratada como mais específica
![Page 22: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/22.jpg)
Explorando as novidades da linguagem C# 4
Rogério Moraes de Carvalho VITA Informática
![Page 23: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/23.jpg)
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
![Page 24: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/24.jpg)
Versão assíncrona via TAP Principais novidades da linguagem C# 5
TRetorno NomeOperacao(TParam1 p1, TParam2 p2);
Task<TRetorno> NomeOperacaoAsync(TParam1 p1, TParam2 p2);
Versão síncrona de uma operação
Versão assíncrona da operação síncrona segundo o padrão TAP
Opcionais: cancelamento e progresso Task<TRetorno> NomeOperacaoAsync(TParam1 p1, TParam2 p2 [, CancellationToken cancellationToken] [, IProgress<T> progress]);
Cancelamento
Progresso
![Page 25: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/25.jpg)
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
![Page 26: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/26.jpg)
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
![Page 27: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/27.jpg)
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
![Page 28: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/28.jpg)
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; } }
![Page 29: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/29.jpg)
Explorando as novidades da linguagem C# 5
Rogério Moraes de Carvalho VITA Informática
![Page 30: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/30.jpg)
Compiler-as-a-Service (CaaS) Principais novidades do projeto Roslyn
Classe
Campo
public Classe1
private
string
campo1
Código-fonte Código-fonte
Código-fonte
Assembly .NET
Assembly .NET
Assembly .NET
Meta-programação Laço
Ler-Avaliar-Imprimir
Modelo de objetos da linguagem
Incorporação de DSL (Domain
Specific Language)
Compilador
![Page 31: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/31.jpg)
APIs para o CaaS Principais novidades do projeto Roslyn
Serviços
da
linguagem
APIs do
compilador
Pipeline do
compilador
Syntax
Tree API
Symbol
API
Binding and
Flow Analysis
APIs
Emit
API
Form
atter
Co
lorize
r
Ou
tlinin
g
Navigate To
Ob
ject B
row
ser
Co
mp
letion
List
Find
All
Refe
ren
ces
Re
nam
e
Qu
ick Info
Signatu
re H
elp
Extract Meth
od
Go
To D
efinitio
n
Edit an
d C
on
tinu
e
Parser Metadata
Import
Binder IL
Emitter
Symbols
![Page 32: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/32.jpg)
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
![Page 33: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/33.jpg)
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
![Page 34: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/34.jpg)
Palestras Relacionadas
DEV304 – C# e Visual Basic Future: Async Made Simple Giovanni Bassi (29/09 18:40 às 19:50)
WEB302 – Presente e futuro da linguagem de programação JavaScript Rogério Moraes de Carvalho (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)
![Page 35: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/35.jpg)
http://technet.microsoft.com/pt-br
http://msdn.microsoft.com/pt-br
Get the free mobile app for your phone
http:/ /gettag.mobi
Get the free mobile app for your phone
http:/ /gettag.mobi
![Page 36: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/36.jpg)
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
![Page 37: TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com a linguagem C# para ser um desenvolvedor mais efetivo](https://reader034.fdocumentos.tips/reader034/viewer/2022052619/5561e858d8b42ab1068b508c/html5/thumbnails/37.jpg)
© 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.