C Sharp
C# é uma linguagem de programação multiparadigma, de tipagem forte, desenvolvida pela Microsoft como parte da plataforma .NET. Sua sintaxe orientada a objetos, inspirada em C++ e Java, compila o código para Common Intermediate Language (CIL), que é interpretado pela máquina virtual Common Language Runtime (CLR). Inicialmente desenvolvida para o .NET Framework de código fechado, C# evoluiu para se tornar uma linguagem robusta, escalável e acessível em diversos dispositivos.
Pontos-chave
- C# é uma linguagem de programação multiparadigma e de tipagem forte, criada pela Microsoft para a plataforma .NET.
- Seu código é compilado para CIL e executado pela CLR, permitindo a execução em diferentes dispositivos.
- A linguagem evoluiu de uma necessidade de software acessível e disponível em múltiplos dispositivos.
- C# combina características de C++, Java e Object Pascal, adicionando funcionalidades próprias.
- A padronização da linguagem C# e do CLI pela ECMA e ISO garante sua evolução e acessibilidade.
Imagem: Rettinghaus · BY · Openverse
A norma ECMA detalha os objetivos de design para a linguagem C#.
C# surgiu como parte da plataforma .NET, visando ser uma linguagem simples, robusta, orientada a objetos e escalável para rodar em diversos dispositivos. A necessidade de software acessível e compatível impulsionou a iniciativa .NET e a criação de C#. Originalmente chamada Cool, a linguagem foi apresentada ao público como C# em 2000.
Etimologia do Nome C#
O nome "C#" utiliza o símbolo de sustenido musical (♯), que eleva uma nota em meio tom. Devido a limitações técnicas e de teclado, o cerquilha (#) foi adotado na escrita, conforme especificado na norma ECMA-334. Em contextos visuais como propagandas, o símbolo de sustenido pode ser utilizado.
Evolução das Versões
Características em processo de desenvolvimento.
Imagem: Rettinghaus · BY · Openverse
C# é uma linguagem visual, orientada a eventos e totalmente orientada a objetos, que promove a interoperabilidade entre linguagens e a integração com a internet via padrões como SOAP e XML. Com raízes em C, C++ e Java, C# oferece recursos essenciais para programadores, incluindo orientação a objetos, manipulação de strings, gráficos, interfaces gráficas (GUI), tratamento de exceções, multithreading, multimídia, processamento de arquivos, estruturas de dados, bancos de dados, redes e computação distribuída.
Principais Características
Dentre as características essenciais do C# podemos citar:
Sintaxe Semelhante a C/C++/Java
A sintaxe da linguagem C# é semelhante à de outras linguagens de estilo C, como C, C++ e Java. Em particular:
Orientação a Objeto e Herança
A herança, um pilar da programação orientada a objetos, permite a reutilização de código ao criar classes baseadas em classes existentes. Em C#, uma classe derivada herda dados e comportamentos da classe base, podendo ser aprimorada com novos recursos. Diferente de C++, C# não suporta herança múltipla, permitindo que uma classe derive de apenas uma classe base direta.
Suporte à Programação Funcional
Embora primariamente imperativa, C# oferece suporte à programação funcional desde a versão 2.0 com delegados anônimos. A partir do C# 3.0, com a introdução de expressões lambda, métodos de extensão e compreensões de consulta, o suporte foi expandido. Versões posteriores, como C# 7, adicionaram conceitos como records, pattern matching e tuplas.
Sistema de Tipos Unificado (CTS)
C# utiliza um sistema de tipos unificado chamado Common Type System (CTS), onde todos os tipos, incluindo primitivos, derivam de System.Object. Isso garante que todos os tipos herdem métodos como ToString(). O CTS divide os tipos em tipos de valor e tipos de referência. Tipos de valor comparam seus dados reais e são sempre criáveis e copiáveis, sem identidade referencial. Eles derivam de System.ValueType e não podem herdar uns dos outros, embora possam implementar interfaces.
Classes e Estruturas
Em C#, a classe (class) é a unidade fundamental de programação, a partir da qual objetos são instanciados e métodos são encapsulados. Classes em C# podem implementar múltiplas interfaces, mas herdam de apenas um objeto pai, sendo tipos por referência. A linguagem também suporta estruturas (struct), que são tipos por valor. Classes estáticas permitem métodos que não operam em instâncias, assemelhando-se a funções normais.
Imagem: velvetLady · BY-ND · Openverse
Um programa em C# é composto por quatro elementos principais.
Exemplos de Código
Segue, abaixo, o programa teste Olá Mundo, que exibe a frase "Olá, Mundo!".
Compilação e Assemblies
O código-fonte de programas C# (.cs) é compilado em assemblies, que podem ser DLLs ou EXEs. Assemblies são a unidade básica para reutilização, versionamento, segurança e implantação no .NET, gerenciados pelo CLR.
Embora C# não inclua bibliotecas de classes nativas, sua forte ligação com a plataforma .NET fornece acesso a classes e funções de execução. O código é organizado em namespaces, que agrupam classes com funcionalidades similares (ex: System.Windows.Forms, System.Console). Assemblies, como System.Drawing.dll e mscorlib.dll, reúnem namespaces e objetos, servindo como unidades de organização superiores.
Gerenciamento de Coleções
Coleções em C# gerenciam grupos de objetos semelhantes internamente, diferindo de arrays que exigem gerenciamento manual de tamanho. O namespace Collections.Generic oferece coleções predefinidas e estruturas de dados como pilhas, listas e filas. Algumas classes membros incluem:
Imagem: Boston Public Library · BY-NC-ND · Openverse
Em 2001, C# e a Common Language Infrastructure (CLI) foram submetidos à Ecma International para padronização, resultando nas especificações ECMA-334 e ISO/IEC 23270. As atualizações subsequentes, como a edição 3 da especificação C#, introduziram recursos como classes parciais, métodos anônimos, tipos anuláveis e genéricos. A padronização garante proteção de licenciamento razoável e não discriminatória de patentes.
Imagem: DerrickT · BY · Openverse
O compilador de referência é o Microsoft Visual C#, de código aberto. A Microsoft lidera o desenvolvimento de um novo compilador e conjunto de ferramentas open-source, "Roslyn", escrito em C# e funcional como APIs para ferramentas de refatoração e diagnóstico. O projeto .NET Core é uma iniciativa multiplataforma aberta. Existem outros compiladores C# que implementam a CLI e bibliotecas .NET até a versão 2.0.


