Devido a limitações técnicas, a tipografia desejável do título não pôde ser renderizada corretamente.
VS # | ||
Data da primeira versão | 2001 | |
---|---|---|
Paradigma | Estruturado , imperativo , orientado a objetos | |
Autor | Microsoft | |
Última versão | 9,0 (4 de setembro de 2020) | |
Versão de desenvolvimento | 8,0 | |
Digitando | Estático , forte , nominativo | |
Dialetos | 1,0, 1,1, 1,2, 2,0 (ECMA), 3,0, 3,5, 4,0, 5,0, 6,0, 7,0, 7,1, 7,2, 7,3, 8,0, 9,0 | |
Influenciado por | C ++ , Java | |
Influenciado | Swift , Vala , F # , Kotlin , TypeScript | |
Implementações | Microsoft .NET , Mono , DotGNU | |
Sistema operacional | Plataforma cruzada | |
Local na rede Internet | docs.microsoft.com/en-us/dotnet/csharp e docs.microsoft.com/de-de/dotnet/csharp | |
Extensão de arquivo | .cs | |
C # ( C sharp [ s i ː . Ʃ ɑ ː p ] em inglês britânico ) é uma linguagem de programação orientada a objetos , comercializada pela Microsoft desde 2002 e projetada para expandir na plataforma Microsoft .NET .
É derivado do C ++ e muito próximo do Java, do qual assume a sintaxe geral, bem como os conceitos, adicionando noções como sobrecarga de operador , indexadores e delegados . É usado principalmente para desenvolver aplicativos da Web na plataforma ASP.NET .
C # é uma linguagem de programação orientada a objetos , fortemente tipada , derivada de C e C ++ , a linguagem como Java . Ele é usado para desenvolver aplicativos da web , bem como aplicativos de desktop, serviços da web , comandos, widgets ou bibliotecas de classes. Em C #, um aplicativo é um pacote de classes em que uma das classes possui um método Main , como é feito em Java.
C # se destina a desenvolver na plataforma .NET , uma pilha de tecnologia criada pela Microsoft para suceder o COM .
Os executáveis em C # são subdivididos em assemblies, namespaces, classes e membros da classe. Um assembly é a forma compilada, que pode ser um programa (um executável) ou uma biblioteca de classes (uma dll). Um assembly contém o código executável no MSIL, bem como os símbolos. O código MSIL é traduzido para a linguagem de máquina em tempo de execução pela função just-in-time da plataforma .NET.
C # se destina ao desenvolvimento na plataforma .NET. O coração desta pilha tecnológica é o framework .NET , composto por:
Outro produto da plataforma .NET é o ambiente de desenvolvimento Visual Studio .NET , uma ferramenta normalmente usada para programação em C #.
C # é uma linguagem derivada de C ++ , que fornece digitação segura , bem como possibilidades de encapsulamento , herança e polimorfismo de linguagens orientadas a objetos. Em C #, todos os tipos são objetos . A linguagem possui um coletor de lixo e um sistema de tratamento de exceções .
A digitação segura significa, em particular, que as seguintes operações são recusadas: uso de uma variável não inicializada, tentativa de acesso além dos limites de uma matriz, conversões de tipo cujos resultados não são previsíveis, ultrapassagem dos limites durante as operações aritméticas.
Muitas das possibilidades do Java são encontradas em C #, e há uma forte semelhança entre o código escrito em C # e o código equivalente em Java.
Em C #, as variáveis podem ser de um tipo de referência ou de um tipo de valor . Os tipos de valor são tipos primitivos, enumerações, estrutura e tipo anulável. Os tipos de referência são classes, interfaces, arrays e delegado .
Tipos primitivosOs tipos primitivos são sbyte, short, int, long, byte, ushort, uint, ulong, char, float, double, decimal e bool.
aulaAs construções mais fundamentais da linguagem C # são as classes . Eles podem conter constantes, campos, propriedades, indexadores, métodos, eventos, operadores, construtores, destruidores ou subclasses. As classes elementares são string e objeto.
estruturaAs estruturas são semelhantes às classes, mas são tipos de valor e não podem ser herdados .
delegarUm delegado é uma referência a um método que possui determinados parâmetros. Delegados são usados para atribuir métodos a variáveis e passá-los como parâmetros.
enumUm tipo enumerado é um tipo de valor que possui um conjunto de constantes. Cada tipo enumerado possui um tipo subjacente: um tipo primitivo determinado de acordo com os valores das constantes.
tipo anulávelOs anuláveis são tipos primitivos que também podem ser nulos . Cada tipo primitivo T tem um tipo anulável associado T? Por exemplo, uma variável do tipo int? pode conter um int ou nulo.
As palavras-chave em C # 1.0 são:
abstract class event if new readonly as const explicit implicit null ref base continue extern in object return bool decimal false int operator sbyte break default finally interface out sealed byte delegate fixed internal override short case do float is params sizeof catch double for lock private stackalloc char else foreach long protected static checked enum goto namespace public string struct throw typeof unchecked using volatile switch true uint unsafe virtual while this try ulong ushort voidPalavras-chave adicionadas entre C # 2.0 e 6.0:
add dynamic join select alias equals let set ascending from nameof value async get on var await global orderby where by group partial when descending into remove yieldA linguagem tem várias alterações em relação ao C / C ++; os seguintes pontos devem ser particularmente observados:
Embora C # seja semelhante a Java, existem algumas diferenças notáveis, por exemplo:
Foi em setembro de 2002 que a plataforma .NET e C # foram apresentadas ao público. C # se torna a linguagem de fato desta plataforma, ele também tem sido usado para implementar parte da plataforma .NET.
versõesAno | Versão | Biblioteca | Mudança principal |
---|---|---|---|
2002 | 1.0 | .NET framework 1.0 e 1.1 | |
2005 | 2.0 | .NET framework 2.0 | genericidade adicionada ao C # e ao framework |
2008 | 3,0 | .NET framework 3.5 | LINQ (consultas integradas à linguagem) |
2010 | 4,0 | .NET framework 4.0 | tipos dinâmicos |
2012 | 5.0 | .NET framework 4.5 | métodos assíncronos |
2015 | 6,0 | .NET framework 4.6 | versão para linux |
2016 | 7,0 | .NET framework> = 4.5 | Tuplas, funções locais |
2019 | 8,0 | Padrão .NET> = 2.1 e .NET Core> = 3.0 | Membro somente leitura, operador de atribuição de mesclagem |
A Microsoft disponibilizada ao público emOutubro de 2005, após um longo período de testes beta, versão 2.0 da biblioteca .NET, acompanhada por uma nova versão de quase todas as ferramentas associadas. C # não é uma exceção à regra e, portanto, foi lançado na versão 2.0, com as seguintes adições:
Para referência, as especificações completas dos novos recursos introduzidos na versão 2.0 estão disponíveis nos links externos .
Anders Hejlsberg , pai de Delphi, falou sobre a implementação de genéricos em C #, Java e C ++ nesta entrevista (in) .
A funcionalidade dos tipos anuláveis foi corrigida apenas algumas semanas antes do lançamento público da versão 2.0, porque foi revelado que se o valor da variável fosse de fato zero, esta variável não era nula no sentido tradicional do termo, ou seja, não é uma referência vazia. Portanto, a conversão de um tipo primitivo de valor zero em um objeto resultou em uma referência diferente de zero a um valor zero. Para corrigir este problema, foi necessário corrigir o kernel CLR e realizar várias verificações e correções em todos os produtos da gama .NET 2.0 (Visual Studio 2005, SQL Server 2005, C # e VB.NET).
C # 3.0 foi apresentado no PDC 2005. A versão final está disponível desde 19 de novembro de 2007para download no site da Microsoft (en) . Os principais novos recursos são os seguintes:
Uma visão geral do C # 3.0 e LINQ pode ser encontrada na página .NET Framework Development Center .
O código compilado em C # 3.0 é totalmente compatível com o de 2.0, pois as melhorias feitas são puramente sintáticas ou consistem em atalhos compensados no momento da compilação. No entanto, os novos recursos introduzidos nas bibliotecas da versão 3.5 (LINQ, etc.) não podem ser usados com versões anteriores do C #.
Esta versão requer Windows XP ou superior ( Vista ou Windows 7 ). Não está disponível para Windows 2000 .
O idioma da versão 4 oferece vários novos recursos:
A estrutura .NET 4.0 foi lançada em12 de abril de 2010, acompanhado pelo Visual Studio 2010. Ele oferece, entre outros:
A linguagem da versão 5 usada para programar programas assíncronos simplesmente adicionando palavras async- chave e await.
O comportamento dos fechamentos no loop foreachfoi alterado. Não é mais necessário introduzir uma variável local em um loop foreachpara evitar problemas de fechamento .
Observe também as informações relativas ao chamador que permitem saber o nome do método que chamou uma propriedade.
A sexta versão do C # faz várias alterações, incluindo:
As propriedades implementadas automaticamente (ou propriedades automáticas) apareceram pela primeira vez em C # 3, para simplificar a declaração de propriedades que simplesmente encapsulam o acesso aos campos. Embora tornem o código mais conciso, eles têm uma desvantagem: não é possível inicializá-los no nível de declaração, isso deve ser feito necessariamente no construtor. Além disso, não é possível tornar as propriedades automáticas somente leitura, uma vez que elas não possuem modificador (setter) e, portanto, não poderíamos atribuir um valor a elas.
C # 6 resolve esse problema permitindo que propriedades automáticas sejam inicializadas no nível de declaração.
C # foi padronizado pela ECMA (ECMA-334) emdezembro de 2001e pela ISO / IEC ( ISO / IEC 23270 ) em 2003 .
As mudanças na versão 2.0 foram padronizadas pela ECMA (ECMA-334) emjunho de 2006e pela ISO / IEC ( ISO / IEC 23270: 2006 ) emSetembro de 2006.
A Microsoft abriu o código-fonte de algumas bibliotecas usadas por C # em outubro de 2007sob a Licença de Fonte de Referência da Microsoft (MS-RSL).
O padrão ECMA 334 e ISO 23270 definem o nome do idioma como o caractere Unicode 0043 (C maiúsculo) seguido pelo caractere 0023 (#). É pronunciado "C sustenido" e não "C hash", "sustenido" na verdade designando o símbolo musical ♯ mas # sendo necessário para fácil acesso a partir de um teclado de computador que oferece a cruz ("hash").
O nome "C #" é inspirado pela notação musical em que um sustenido indica que a nota escrita deve ser aumentada em um semitom. Isso é semelhante ao nome da linguagem C ++, onde "++" indica que uma variável deve ser incrementada em 1 após ser avaliada. O símbolo # também se parece com uma ligadura de quatro símbolos "+" (em uma grade dois por dois), o que implica que a linguagem é um incremento de C ++.