Escolar Documentos
Profissional Documentos
Cultura Documentos
Objetivos do projeto
A norma ECMA lista os objetivos de design para C#:[4]
Histria
A linguagem C# faz parte do conjunto de ferramentas oferecidas na plataforma .NET e surge como uma
linguagem simples, robusta, orientada a objetos, fortemente tipada e altamente escalvel a fim de permitir que
uma mesma aplicao possa ser executada em diversos dispositivos de hardware, independentemente destes
serem PCs, handhelds ou qualquer outro dispositivo mvel.
O avano das ferramentas de programao e dos dispositivos eletrnicos inteligentes, criou problemas e novas
exigncias. As novas verses de componentes compartilhados eram incompatveis com o software antigo. Os
desenvolvedores reconheceram a necessidade de software que fosse acessvel para qualquer um e disponvel
por meio de praticamente qualquer tipo de dispositivo. Para tratar dessas necessidades, a Microsoft anunciou
sua iniciativa .NET e a linguagem de programao C#.[5]
Durante o desenvolvimento da plataforma .NET, as bibliotecas foram
escritas originalmente numa linguagem chamada Simple Managed C
(SMC), que tinha um compilador prprio. Mas, em Janeiro de 1999,
uma equipe de desenvolvimento foi formada por Anders Hejlsberg, que
fora escolhido pela Microsoft para desenvolver a linguagem. D-se
incio criao da linguagem chamada Cool. Um pouco mais tarde, em
2000, o projeto .NET era apresentado ao pblico na Professional
Developers Conference (PDC), e a linguagem Cool fora renomeada e
apresentada como C#.
Etimologia
Pensava-se que o nome "C#" viria duma sobreposio de quatro smbolos +, dando a
impresso de ++++, uma aluso continuao do C++. Entretanto, a cerquilha de "C#" se
refere ao sinal musical sustenido (, em ingls: sharp), que aumenta em meio tom uma nota
musical.[6]
Porm, devido a limitaes tcnicas (fontes padres, navegadores, etc) e o fato do smbolo A nota d
no estar presente nos teclados, o cerquilha (#) foi escolhido para ser usado no nome sustenido em
escrito.[7] Essa conveno refletida no ECMA-334 C# Language Specification, a clave de sol.
Verses
C# 1.0
C# 2.0[9]
C# 3.0[10]
C# 4.0[11]
Vinculao dinmica
Argumentos nomeados e opcionais
Co e contravarincia genrica
Tipos embutidos de interoperabilidade ("NoPIA")[40]
C# 5.0[12]
Mtodos assncronos
Atributos de informao do chamador
C# 6.0[13]
Literais binrios
Separadores de dgitos
Funes locais
Switch para tipos
Retorno de referncias
Tuplas
Declarao Out (Out var ou Out "tipo")
Pattern Matching
Returno de async arbitrrio
Registros (Record)
Caractersticas
O C# uma linguagem de programao visual dirigida por eventos e totalmente orientada a objetos. Permite
um novo grau de intercmbio entre linguagens (componentes de software de diferentes linguagens podem
interagir). Os desenvolvedores podem empacotar at software antigo, para trabalhar com novos programas C#.
Alm disso, os aplicativos C# podem interagir pela Internet usando padres do setor, como SOAP (protocolo de
acesso a objetos simples) e XML (linguagem de marcao extensvel).
O C# tem razes em C, C++ e Java, adaptando os melhores recursos de cada linguagem e acrescentando novas
capacidades prprias. Ele fornece os recursos que so mais importantes para os programadores, como
programao orientada a objetos,strings, elementos grficos, componentes de interface com o usurio grfica
(GUI), tratamento de excees, mltiplas linhas de execuo, multimdia (udio, imagens, animao e vdeo),
processamento de arquivos, estruturas de dados pr-empacotadas, processamento de banco de dados, redes
cliente/servidor com base na Internet e na World Wide Web e computao distribuda.
Principais caractersticas do C#
Simplicidade: os projetistas de C# costumam dizer que essa linguagem to poderosa quanto o C++ e to
simples quanto o Visual Basic;
Completamente orientada a objetos: em C#, qualquer varivel tem de fazer parte de uma classe;
Fortemente tipada: isso ajudar a evitar erros por manipulao imprpria de tipos e atribuies
incorretas;
Gera cdigo gerenciado: assim como o ambiente .NET gerenciado, assim tambm o C#;
Tudo um objeto: System.Object a classe base de todo o sistema de tipos de C#;
Controle de verses: cada assembly gerado, seja como EXE ou DLL, tem informao sobre a verso do
cdigo, permitindo a coexistncia de dois assemblies homnimos, mas de verses diferentes no mesmo
ambiente;
Suporte a cdigo legado: o C# pode interagir com cdigo legado de objetos COM e DLLs escritas em
uma linguagem no-gerenciada;
Flexibilidade: se o desenvolvedor precisar usar ponteiros, o C# permite, mas ao custo de desenvolver
cdigo no-gerenciado, chamado unsafe;
Linguagem gerenciada: os programas desenvolvidos em C# executam num ambiente gerenciado, o que
significa que todo o gerenciamento de memria feito pelo runtime via o GC (Garbage Collector).[15]
Sintaxe
Orientao a objeto
Um dos principais recursos da programao orientada a objetos a herana. Herana uma forma de
reutilizao de software em que as classes so criadas pela absoro dos dados e comportamentos de uma
classe j existente e aprimorando-as com novos recursos. Ao criar uma classe, em vez de escrever variveis de
instncia e mtodos complementares novos, o programador pode indicar que a nova classe deve herdar as
variveis de classe, propriedades e mtodos de outra classe. Uma classe derivada mais especfica do que sua
classe base e representa um grupo mais especializado de objetos. Normalmente, a classe derivada contm os
comportamentos de sua classe base e comportamentos adicionais. No caso de herana simples, uma classe
derivada de uma nica classe base. Ao contrrio do C++, o C# no suporta herana mltipla (que ocorre
quando uma classe derivada de mais de uma classe base direta).
Esta foi uma deciso de design do arquiteto principal da linguagem para evitar complicaes e simplificar os
requisitos arquitetnicos em toda a CLI. Ao implementar mltiplas interfaces que contm um mtodo com a
mesma assinatura, C# permite implementar cada mtodo dependendo da interface com a qual esse mtodo est
sendo chamado ou, permite implementar o mtodo uma vez e ter que ser uma invocao em uma chamada
atravs de qualquer uma das interfaces da classe.
A linguagem permite que se acesse um objeto como se ele fosse de outro tipo de acordo com o contrato, de
maneira polimrfica.
As classes podem ser abstratas e exigirem que sejam derivadas atravs da palavra-chave abstract. Nesse tipo
de classe mtodos no precisam ser obrigatoriamente implementados deixando para suas filhas implementar.
public Os membros assim declarados podem ser acessado de qualquer local da aplicao
private Apenas os membros da classe atual podem acessar um membro declarado como privado
protected Somente pode ser acessado pela prpria classe e as derivadas dela
internal Qualquer classe dentro um mesmo assembly pode acessar esse membro
Programao funcional
Embora primariamente uma linguagem imperativa, at o C# 2.0 oferecia suporte limitado para programao
funcional atravs de funes de primeira classe e encerramentos sob a forma de delegados annimos. O suporte
foi expandido no C# 3.0 para programao funcional com a introduo de uma sintaxe leve para expresses
lambda, mtodos de extenso e uma sintaxe de compreenso de lista na forma de uma linguagem de
"compreenso de consulta". Em C# 7 mais um passo dado com novos conceitos, tais como: records, pattern
matching, tuplas, etc.
Tipos de dados
C# tem um sistema de tipo de dados unificado. Este sistema de tipo unificado chamado Common Type
System (CTS)[16].
Um sistema de tipo unificado implica que todos os tipos, incluindo primitivos, como inteiros, so subclasses da
classe System.Object. Por exemplo, cada tipo herda um mtodo ToString().
Tipos de valor
Os tipos de valor normalmente representam dados simples, como valores int ou bool. Os tipos de valor
prprios da linguagem so os tipos integrais, o tipo decimal e os tipos de ponto flutuante float (um nmero de
ponto flutuante IEEE de 32 bits) e double, e ainda char (uma unidade de cdigo Unicode de 16 bits) e
System.DateTime que dentifica um ponto especfico no tempo com nanossegundo de preciso). Outros
exemplos so enum (enumeraes) e struct (estruturas definidas pelo usurio).
Tipos de referncia
Box e unboxing
Exemplo:
Existem dois tipos de converses no C#: implcita e explcita. C# mais segura do ponto de vista de tipos que
C++. Apenas converses seguras so feitas implicitamente. No h converso implcita de inteiro para
booleano, por exemplo.
Tempo de vida
Segundo seu escopo e disponibilidade, as variveis podem ser do tipo static (o valor fica disponvel para
todos os objetos da classe em que a varivel foi declarada), de instncia (criada na memria cada vez que
instanciamos um novo objeto).
Declarao implcita
C# permite declarar variveis locais estaticamente tipadas sem indicar seu tipo atravs da palavra-chave var.
Arrays so declarados implicitamente com new[]. Tambm possvel declara variveis diversas com tipagem
dinmica (no h verificao em tempo de compilao) com dynamic.
Classes e Estruturas
Classes estticas
Alm das classes normais possvel criar classes estticas onde os mtodos no trabalham com instncias e se
assemelham com funes normais.
Classe Console
A classe Console, do namespace System, fornece suporte bsico para leitura e escrita de caracteres. Os
principais mtodos usados para essas funcionalidades so:
Classe Convert
Muitas vezes precisamos converter o tipo para outro tipo. Neste caso, podemos usar a classe Convert, que
fornece diversos mtodos para converso entre os tipos bsicos de dados. Nem sempre possvel fazer a
converso e um erro gerado, por isso existem outros mtodos nos tipos que podem tratar a converso de
forma mais apropriada. Exemplo:
int num;
string texto = 2;
num = Convert .ToInt32 (texto);
Classe Math
Os mtodos da classe Math permitem que o programador efetue certos clculos matemticos comuns. Os
mtodos so chamados escrevendo-se o nome do mtodo, seguido de um parntese de abertura, do argumento
(ou uma lista de argumentos separados por vrgulas) do mtodo e um parntese de fechamento. Exemplo: para
calcular e imprimir a raiz quadrada de 900.0 podemos escrever:
ou de forma compacta:
WriteLine (Sqrt(900.0));
Interface
Interfaces pertencem aos tipos de referncia, em que definem contratos que so implementados por uma classe
ou estrutura (que a utiliza para simular herana j que no oferece suporte para herdar outra estrutura). Uma
classe pode implementar mltiplas interfaces.[18][19]
Uma interface pode conter mtodos, propriedades, eventos e indexadores, mas no pode implementar seus
mtodos.
Principais Propriedades:
Uma interface quase como uma classe base abstrata. Qualquer classe ou estrutura que implementa a
interface deve implementar todos os seus membros;
Uma interface no pode ser instanciada diretamente. Seus membros so implementados por qualquer
classe ou estrutura que implementa a interface;
Interfaces podem conter eventos, indexadores, mtodos, propriedades;
As interfaces no contm qualquer implementao dos mtodos;
Uma classe ou estrutura pode implementar interfaces mltiplas. Uma classe pode herdar uma classe base
e tambm implementar uma ou mais interfaces.
interface ISampleInterface
{
void SampleMethod ();
}
class ImplementationClass : ISampleInterface
{
// implementao explcita do membro da interface:
void ISampleInterface .SampleMethod ()
{
// Implementao do Mtodo.
}
static void Main()
{
// Instncia da interface.
ISampleInterface obj = new ImplementationClass ();
// Chamada do membro.
obj.SampleMethod ();
}
}
Delegates
um elemento que permite que voc faa referncia a um mtodo. semelhante a um ponteiro de funo, mas
sua diferena se baseia em ser totalmente orientado a objetos encapsulando a instncia de mtodo ou objeto.[20]
O objeto de delegao pode ser passado para o cdigo que pode chamar o mtodo referenciado sem ter que
saber em tempo de compilao qual mtodo ser chamado. Usando delegates voc tem a flexibilidade para
implementar qualquer funcionalidade em tempo de execuo. A nica restrio que o mtodo seja compatvel
com o tipo de declarao do delegate, usando assim perfeitamente invocao annima. Delegates possuem a
seguintes propriedades:
Exemplo:
Enum
Enum em C# usado para declarar uma enumerao, um tipo distinto que consiste em um conjunto de
constantes nomeados lista de enumerador.
Usados geralmente dentro de namespace para ser visvel para acesso das classes e usados dentro de classes e
structs, sendo considerados constantes numricas.
Por caracterstica comea com 0 mas pode ser inicializado com outro valor.
Se for atribudo a uma varivel, deve ser feita uma converso explcita do tipo enum para o tipo da varivel
tratada. Exemplo:
Mtodos
Mtodo um membro de uma classe que permite implementar uma ao. Consiste de um cabealho (contm
um atributo, um modificador, um tipo de retorno, um nome do membro e uma lista formal de parmetros) e um
corpo (bloco de declaraes). O C# inclui 8 modificadores:[22]
O modificador new em um mtodo indica que o mtodo derivado planejado para esconder o
new
mtodo base
public usado para garantir que um mtodo acessado por todas as classes sem qualquer restrio
O modificador static indica que o mtodo pertence somente ao tipo static e no pode referir-se a
static
mtodos non-static ou variveis em uma classe
virtual usado quando a implementao de um mtodo pode ser mudada por classes derivadas
sealed Em um mtodo, previne uma classe derivada sobrescrever um mtodo
override usado para modificar um mtodo de uma classe base na classe derivada
abstract Em um mtodo, indica que o mtodo no contm implementao
extern Indica que o mtodo implementado externamente
O C# permite que vrios mtodos de mesmo nome sejam definidos na mesma classe, desde que esses mtodos
tenham diferentes conjuntos de parmetros (nmero, tipos ou ordem dos parmetros). Isso chamado
sobrecarga de mtodos. Quando um mtodo sobrecarregado chamado, o compilador C# seleciona o mtodo
correto examinando o nmero, os tipos e a ordem dos argumentos da chamada.
Mtodos de extenso
Mtodos de extenso em C # permitem que os programadores usem mtodos estticos como se fossem mtodos
da tabela de mtodos de uma classe, permitindo que adicionem mtodos a um objeto que eles acham que
deveria existir nesse tipo e suas derivadas.
Passagem de parmetr os
valor: corresponde a uma varivel local que recebe seu valor inicial do argumento fornecido quando um
mtodo chamado. Isto acontece porque um parmetro de valor declarado em um mtodo refere-se
localizao da memria diferente daquela do argumento chamado em um mtodo.
referncia: um parmetro declarado com o modificador ref chamado de parmetro de referncia.
Diferente do parmetro de valor, o parmetro de referncia no cria uma nova localizao na memria.
Refere-se mesma localizao de memria do argumento chamado em um mtodo.
sada: um parmetro declarado com o modificador out um parmetro de sada. Parmetros de sada so
usados em mtodos que retornam vrios valores. Refere-se mesma localizao de memria do
argumento chamado em um mtodo. necessrio atribuir um parmetro de sada antes do mtodo
retornar um valor. Em C# 7 menos incentivado por causa do advento das tuplas. Mas para cdigo
legado possvel declarar a varivel junto ao argumento.
nmero varivel de argumentos: um parmetro params pode ser um array de nica dimenso que recebe
vrios argumentos.
Propriedades
Uma propriedade o atributo de uma classe (o tamanho de uma string, por exemplo). Propriedades no
denotam localizaes de armazenamento mas contm declaraes executveis que so usadas para ler ou
escrever o valor da propriedade. As propriedades podem ser dos tipos:
esttica: usamos o modificador static. No podemos nos referir a uma propriedade static usando
this. Usamos apenas seu nome.
instncia: acessam um campo da instncia.
padro: a propriedade que usada sem um nome, funciona como um ndice
Os acessores das propriedades so declaraes executveis que leem ou escrevem o valor de uma propriedade.
So eles o get ( um mtodo sem nenhum parmetro que retorna o valor da propriedade) e set (mtodo que
atribui o valor em uma propriedade). A propriedade apenas um acar sinttico para esse par de mtodos.
Namespace
A palavra-chave de namespace usada para declarar um escopo que contm um conjunto de objetos
relacionados. Voc pode usar um namespace para organizar elementos de cdigo e para criar globalmente tipos
exclusivos.[23][24][25][26][27]
Iterador
Iteradores so utilizados para percorrer uma coleo de dados como uma lista.
O mtodo iterator um get personalizado para colees, em C# usa-se a declarao de produzir retorno de um
elemento de cada vez, como o operador yield return recordando o local atual do cdigo e retornando a
executar no mesmo local para a prxima iterao.
Por meio do foreach um iterator pode retornar mais de um valor at o fim do bloco ou quando o comando
yield break for encontrado. Seus tipos de retorno mais usados so: IEnumerable, IEnumerable<T>,
IEnumerator ou IEnumerator<T>.
Exemplo:
Exceptions Excees
Excees em C# fornecem uma maneira estruturada, uniforme e segura de manipulao, tanto em nvel de
sistema e erros condicionais de aplicao. Exceptions em C# so similares a excees em C++, mas com
algumas importantes diferenas:
Excees podem ser explicitamente geradas por um programa usando a palavra-chave throw.
Exemplo:
O operador new aloca memria para o objeto e, ento, chama o construtor desse objeto. Ao contrrio do C e do
C++, em que os programadores devem gerenciar a memria de maneira explcita, o C# realiza o gerenciamento
de memria internamente. A plataforma .NET realiza a coleta de lixo da memria para retornar a memria do
sistema que no mais necessria. Quando o coletor de lixo executa, ele localiza os objetos para os quais o
aplicativo no tem referncias. Tais objetos podem ser coletados nesse momento ou durante uma execuo
subsequente do coletor de lixo.
A alocao e liberao de recursos, como conexes de rede, conexes de banco de dados e arquivos, devem ser
manipuladas explicitamente pelo programador. Uma tcnica empregada em conjunto com o coletor de lixo
definir um finalizador. Com a sintaxe da declarao (no confundir com a diretiva) using
Ponteiros
Em C#, os ponteiros de endereo de memria s podem ser usados dentro de blocos especificamente marcados
como unsafe e programas com cdigo inseguro precisam de permisses apropriadas para serem executados. A
maior parte do acesso a objetos feita atravs de referncias de objeto seguras, que sempre apontam para um
objeto "vivo" ou tm o valor nulo bem definido; impossvel obter uma referncia a um objeto "morto" (um
que foi coleta de lixo), ou a um bloco de memria aleatria. Um ponteiro inseguro pode apontar para uma
instncia de um tipo de valor, matriz, sequncia de caracteres ou um bloco de memria alocada em uma pilha.
Cdigo que no est marcado como inseguro ainda pode armazenar e manipular ponteiros atravs do tipo
System.IntPtr, mas no pode desreferenci-los.
Portabilidade
Por design, C# a linguagem de programao que reflete mais diretamente a infraestrutura de linguagem
comum (CLI)[28]. A maioria dos seus tipos intrnsecos corresponde a tipos de valor implementados pelo
framework CLI. No entanto, a especificao de linguagem no indica os requisitos de gerao de cdigo do
compilador: ou seja, no indica que um compilador C# deve segmentar um Common Language Runtime, ou
gerar Common Intermediate Language (CIL) ou gerar qualquer outro formato especfico. Teoricamente, um
compilador C# poderia gerar cdigo de mquina como compiladores tradicionais de C++, Pascal ou Fortran. De
fato h iniciativas para que isso se torne realidade[29].
Escrevendo um programa
Um programa em C# contm 4 elementos principais:
uma declarao de namespace: contm as bibliotecas de classe que voc pode usar em um programa. A
diretiva using System especifica que o programa pode utilizar a biblioteca no namespace System.
uma classe: contm as declaraes de dados e mtodos para uma aplicao;
um mtodo Main: semelhante ao C++ e Java, todos os programas C# comeam executando o mtodo
Main;
e uma declarao do programa.
Exemplos de cdigo
Segue, abaixo, o programa teste Ol Mundo, que exibe a frase "Ol, Mundo!":
using System ;
namespace Teste
{
class OlaMundo
{
static void Main()
{
Console .WriteLine ("Ol, Mundo!" );
}
}
}
Compilando o cdigo
As aplicaes desenvolvidas em C# so baseadas em arquivos (com extenso .cs) contendo o cdigo-fonte dos
programas. Quando voc compila seu cdigo, cria um assembly. Um assembly uma coleo de arquivos que
aparecem ao programador como uma nica DLL, biblioteca de link dinmico (Dynamic Link Library), ou
executvel (EXE). Em .NET, um assembly a unidade bsica de reutilizao, versionamento, segurana e
implantao. O CLR proporciona um nmero de classes para manipulao de assemblies.
Bibliotecas
Ao contrrio das outras linguagens de programao,
nenhuma implementao de C# atualmente inclui qualquer
conjunto de bibliotecas de classes ou funes. Mesmo
assim, esta linguagem est muito vinculada plataforma
.NET, da qual obtm as suas classes ou funes de
execuo. O cdigo organizado num conjunto de espaos
de nomes que agrupam as classes com funes
semelhantes. Por exemplo, System.Windows.Forms contm
o sistema Windows Forms; System.Console usado para
entrada/sada de dados.
Colees
Padronizao e licenciamento
Em agosto de 2001, a Microsoft Corporation, a Hewlett-Packard e a Intel Corporation copatrocinaram o envio
de especificaes para o C#, bem como a Common Language Infrastructure (CLI) para a organizao de
padres Ecma International. Em dezembro de 2001, a ECMA lanou ECMA-334 C# Language Specification.
C# tornou-se um padro ISO em 2003 (ISO/IEC 23270:2003 - Information technology Programming
languages C#). A ECMA j havia adotado especificaes equivalentes como a 2 edio do C#, em
dezembro de 2002.
Em julho de 2005, a ECMA submeteu ao ISO/IEC JTC 1, atravs do processo Fast-Track, os padres e TRs
relacionados. Este processo geralmente leva 6-9 meses.
A definio de linguagem C# e o CLI so padronizados sob os padres ISO e ECMA que fornecem proteo de
licenciamento razovel e no-discriminatria de reivindicaes de patentes.
Implementaes
O compilador de referncia C# Microsoft Visual C#, que de cdigo aberto[30].
Existem outros compiladores C#, incluindo uma implementao da Common Language Infrastructure e as
bibliotecas de classe .NET at .NET 2.0:
O projeto Mono fornece um compilador C# de cdigo aberto, uma implementao completa de cdigo
aberto da Common Language Infrastructure, incluindo as bibliotecas de estruturas necessrias, conforme
elas aparecem na especificao ECMA, e uma implementao quase completa das bibliotecas de classe
.NET proprietrias da Microsoft at .NET 3.5. A partir do Mono 2.6, no existem planos para
implementar o WPF; A WF est planejada para uma verso posterior; E h apenas implementaes
parciais do LINQ to SQL e WCF.
O projeto DotGNU (agora descontinuado) tambm forneceu um compilador C# de cdigo aberto, uma
implementao quase completa da Common Language Infrastructure, incluindo as bibliotecas de
estruturas necessrias conforme elas aparecem na especificao ECMA e um subconjunto de algumas
classes proprietrias do .NET da Microsoft at .NET 2.0 (aquelas no documentadas ou includas na
especificao ECMA, mas includas na distribuio padro do Microsoft .NET Framework).
O projeto Rotor da Microsoft (atualmente chamado Shared Source Common Language Infrastructure)
(licenciado somente para uso educacional e de pesquisa) fornece uma implementao de origem
compartilhada do CLR runtime e um compilador C # e um subconjunto das bibliotecas de estrutura
Common Language Infrastructure requeridas na especificao ECMA (At C# 2.0, e suportado apenas no
Windows XP).
Ver tambm
ASP.NET
Common Language Runtime
Microsoft .NET
Microsoft XNA
Mono (projeto)
Visual Studio
Referncias
anguage%20Feature%20Status.md). GitHub.
1. Why Microsoft's C# isn't(http://news.cnet.com/2008 Consultado em 26 de novembro de 2016
-1082-817522.html)(em ingls). Consultado em 26 de 15. "C# e .NET - Guia do Desenvolvedor", Edwin Lima,
agosto de 2010 Eugnio Reis, Rio de Janeiro: Campus, 2002
2. The A-Z of Programming Languages: C#(http://ww 16. Book sources (https://en.wikipedia.org/wiki/Special:
w.computerworld.com.au/article/261958/a-z_program BookSources/0-7356-1288-9). Wikipedia (em ingls)
ming_languages_c_/?pp=7)(em ingls). Consultado 17. Tipo de dado (https://pt.wikipedia.org/w/index.php?t
em 26 de agosto de 2010 itle=Tipo_de_dado&oldid=46462373). Wikipdia, a
3. Java 5 catches up with C#(http://www.barrycorneliu enciclopdia livre. 16 de agosto de 2016
s.com/papers/java5/onefile/)(em ingls). Consultado 18. http://www.microsoft.com/downloads/details.aspx?
em 26 de agosto de 2010 displaylang=en&FamilyID=dfbf523c-f98c-4804-afbd-
4. C# Language Specification(http://www.ecma-intern 459e846b268e CSharp Language Specification C# 3.0
ational.org/publications/files/ECMA-ST/Ecma-334.pd (em ingls) Pgina visitada em 29 de Maro de 2013
f) (PDF) (em ingls). Consultado em 24 de agosto de 19. http://msdn.microsoft.com/pt-
2011 br/library/vstudio/ms228593CSharp Language
5. "C# - Como Programar", H. M. Deitel, So Paulo: Specification C# 5.0 (em ingls) Pgina visitada em 30
Pearson Education, 2003 de Maro de 2013
6. C#/.NET History Lesson(http://www.jameskovacs.c 20. http://msdn.microsoft.com/pt-
om/blog/CNETHistoryLesson.aspx)(em ingls). br/library/vstudio/618ayhy6Referncia de C# Pgina
Consultado em 24 de agosto de 2011 visitada em 30 de Maro de 2013
7. Microsoft C# FAQ (http://msdn.microsoft.com/vcsh 21. http://msdn.microsoft.com/pt-
arp/previous/2002/FAQ/default.aspx) (em ingls). br/library/vstudio/900fyy8e.aspx30/03/13
Consultado em 24 de agosto de 2011 22. Curso online Bradesco - C#,
8. Visual C#.net Standard(http://www.microsoft.com/p http://www.ev.org.br/Paginas/Home.aspx, pgina
resspass/images/gallery/boxshots/web/visual-c-sharp0 visitada em 30/03/13
3.jpg) (em ingls). Consultado em 24 de agosto de 23. http://msdn.microsoft.com/pt-
2011 br/library/vstudio/67ef8sbdPgina visitada em 30 de
9. What's New in the C# 2.0 Language and Compiler Maro de 2013
(https://msdn.microsoft.com/en-us/library/7cz8t42e(v= 24. http://download.microsoft.com/download/a/9/e/a9e229b9-
vs.80).aspx). msdn.microsoft.com. Consultado em 26 fee5-4c3e-8476-
de novembro de 2016 917dee385062/CSharp%20Language%20Specification%20v
10. Overview of C# 3.0(https://msdn.microsoft.com/en- CSharp Language Specification C# 1.0 (em ingls)
us/library/bb308966.aspx). msdn.microsoft.com. Pgina visitada em 29 de Maro de 2013
Consultado em 26 de novembro de 2016 25. http://download.microsoft.com/download/5/e/5/5e58be0a-
11. C# 4.0 - New C# Features in the .NET Framework 4 b02b-41ac-a4a3-
(https://msdn.microsoft.com/en-us/magazine/f f796223. 7a22286214ff/csharp%20language%20specification%20v1.2
aspx). msdn.microsoft.com. Consultado em 26 de CSharp Language Specification C# 1.2 (em ingls)
novembro de 2016 Pgina visitada em 30 de Maro de 2013
12. An Introduction to New Features in C# 5.0(https://b 26. http://download.microsoft.com/download/9/8/f/98fdf0c7-
logs.msdn.microsoft.com/mvpawardprogram/2012/03/ 2bbd-40d3-9fd1-
26/an-introduction-to-new-features-in-c-5-0/). The 5a4159fa8044/csharp%202.0%20specification_sept_2005.do
Microsoft MVP Award Program Blog CSharp Language Specification C# 2.0 (em ingls)
13. dotnet/roslyn (https://github.com/dotnet/roslyn/wiki/ Pgina visitada em 30 de Maro de 2013
Languages-features-in-C#-6-and-VB-14).GitHub. 27. http://www.microsoft.com/en-us/d
Consultado em 26 de novembro de 2016 ownload/details.aspx?id=7029 CSharp Language
14. dotnet/roslyn (https://github.com/dotnet/roslyn/blob/ Specification C# 4.0 (em Ingls) Pgina visitada em 29
c830f88e093d8753e92e7f1054393e456e6fac20/docs/L de Maro de 2013
28. Book sources (https://en.wikipedia.org/wiki/Special: msdn.microsoft.com. Consultado em 26 de novembro
BookSources/0470499486). Wikipedia (em ingls) de 2016
29. Compiling Apps with .NET Native(https://msdn.mi 30. Repositrio (https://github.com/dotnet/roslyn)
crosoft.com/en-us/library/dn584397(v=vs.1 10).aspx).
Obtida de "https://pt.wikipedia.org/w/index.php?title=C_Sharp&oldid=48278226"
Categorias: Microsoft Visual Studio C Sharp Normas ISO Normas IEC Normas Ecma
Linguagens de programao criadas em 2001
Esta pgina foi modificada pela ltima vez (s) 19h58min de 15 de maro de 2017.
Este texto disponibilizado nos termos da licena Creative Commons - Atribuio - Compartilha Igual
3.0 No Adaptada (CC BY-SA 3.0); pode estar sujeito a condies adicionais. Para mais detalhes,
consulte as condies de uso.