Image Image Image Image Image Image Image Image Image

Um tour pela linguagem C#

4 de setembro de 2019 | By | No Comments

Este texto foi uma tradução e adaptação a partir do site oficial da Microsoft.

C# (pronunciado “See Sharp”) é uma linguagem de programação simples, moderna, orientada a objeto e fortemente “tipada”. O C# tem suas raízes na família de linguagens C e será imediatamente familiar para programadores em C, C ++, Java e JavaScript. Este passeio fornece uma visão geral dos principais componentes da linguagem. Se você deseja explorar a linguagem por meio de exemplos interativos, tente a introdução aos tutoriais em C# da Microsoft que em breve teremos a nossa versão brasileira aqui também. 🇧🇷

Orientada a Objetos e a Componentes

C# é uma linguagem orientada a objetos, mas o C# inclui ainda suporte para programação orientada a componentes. O design contemporâneo de software depende cada vez mais de componentes de software na forma de pacotes de funcionalidade independentes e autoexplicativos. A chave para esses componentes é que eles apresentam um modelo de programação com propriedades, métodos e eventos; eles têm atributos que fornecem informações declarativas sobre o componente; e eles incorporam sua própria documentação. O C# fornece construções de linguagem para suportar diretamente esses conceitos, tornando o C# uma linguagem muito natural para criar e usar componentes de software.

C# Lidera um Time de Recursos que te Auxiliam

Vários recursos do C# auxiliam na construção de aplicações robustas e duráveis: A coleta de lixo (Garbage collection) recupera automaticamente a memória ocupada por objetos não utilizados inacessíveis; o tratamento de exceções (exception handling) fornece uma abordagem estruturada e extensível para detecção e recuperação de erros; e o design da linguagem com “tipagens” (type-safe) sendo observadas torna impossível a leitura de variáveis não inicializadas, indexar matrizes além de seus limites ou executar conversões de tipo não verificadas.

C# tem um sistema de tipo unificado. Todos os tipos do C#, incluindo tipos primitivos, como int e double, herdam de um único tipo de objeto raiz (object). Assim, todos os tipos compartilham um conjunto de operações comuns e valores de qualquer tipo podem ser armazenados, transportados e operados de maneira consistente. Além disso, o C# suporta tipos de referência e tipos de valor definidos pelo usuário, permitindo alocação dinâmica de objetos, bem como armazenamento em linha de estruturas leves.

Controle de Versão no Design do C#

Para garantir que os programas e bibliotecas C# possam evoluir ao longo do tempo de maneira compatível, muita ênfase foi colocada no controle de versão (versioning) no design do C#. Muitas linguagens de programação prestam pouca atenção a esse problema e, como resultado, os programas escritos nessas linguagens são interrompidos com mais frequência do que o necessário quando são introduzidas versões mais recentes das bibliotecas dependentes. Aspectos do design de C# que foram diretamente influenciados por considerações sobre versão incluem os modificadores virtuais (virtual) e de substituição (override) separados, as regras para resolução de sobrecarga de método e o suporte a declarações explícitas de membros da interface.

Olá, Mundo!

O programa “Olá, Mundo!” é tradicionalmente usado para introduzir uma linguagem de programação. Aqui está em C#:

Exemplo de “Olá, Mundo!” escrito em C#

Os arquivos de origem C# normalmente têm a extensão de arquivo .cs. Supondo que o programa “Olá, Mundo!” esteja armazenado no arquivo hello.cs, o programa poderá ser compilado usando a linha de comando:

Chamada do arquivo que tem o nosso código do “Olá, Mundo!”

Este comando produz um assembly executável chamado hello.exe. A saída produzida por este aplicativo quando é executada é:

Output, ou em português, a saída/resultado do código executado na chamada anterior.
Importante

O comando csc é compilado para a estrutura completa e pode não estar disponível em todas as plataformas.

O programa “Olá, Mundo!” começa com uma diretiva using que faz referência ao namespace System. Namespaces fornecem um meio hierárquico de organização de programas e bibliotecas C#. Os namespaces contêm tipos e outros namespaces – por exemplo, o namespace System contém vários tipos, como a classe Console referenciada no programa, e vários outros namespaces, como I/O e Collections. Uma diretiva using que faz referência a um determinado namespace permite o uso não qualificado dos tipos que são membros desse namespace. Por causa da diretiva using, o programa pode usar Console.WriteLine como abreviação de System.Console.WriteLine.

Fiz questão de destacar acima o uso do namespace que, apesar da repetição na documentação oficial neste parágrafo e de termos a consciência que é algo básico, já notei no dia-a-dia que muitos profissionais que tiveram aulas de C# na faculdade acabam tendo dificuldade ao entender o uso do namespace, por isso convido a comentarem suas dúvidas sobre o conteúdo e assim nos aprofundarmos nesse conceito básico para que lá na frente não existam dificuldades em entender o “alicerce” da linguagem.

A classe Hello declarada pelo programa “Olá, Mundo!” possui um único membro, o método chamado Main. O método Main é declarado com o modificador estático (static). Embora os métodos de instância possam fazer referência a uma instância de objeto envolvente específica usando a palavra-chave this, métodos estáticos (static) operam sem referência a um objeto específico. Por convenção, um método estático (static) chamado Main serve como ponto de entrada de um programa.

A saída do programa ou simplesmente output, é produzida pelo método WriteLine da classe Console no namespace System. Essa classe é fornecida pelas bibliotecas de classes padrão, que, por padrão, são automaticamente referenciadas pelo compilador.

É só o começo…

Há muito mais para aprender sobre C#. Os tópicos a seguir fornecem uma visão geral dos elementos da linguagem C#. Essas visões gerais fornecerão informações básicas sobre todos os elementos da linguagem e fornecerão as informações necessárias para aprofundar os elementos da linguagem C#:

  • Estrutura do Programa
    • Aprenda os principais conceitos organizacionais na linguagem C#: programas, namespaces, tipos, membros e assemblies.
  • Tipos e Variáveis
    • Aprenda sobre tipos de valor, tipos de referência e variáveis na linguagem C#.
  • Expressões
    • Expressões são construídas a partir de operandos (operands) e operadores (operators). Expressões produzem um valor.
  • Afirmações (Statements)
    • Você usa instruções para expressar as ações de um programa.
  • Classes e Objetos
    • As classes fazem parte dos tipos mais fundamentais de C#. Objetos são instâncias de uma classe. As classes são criadas usando membros, que também são abordados neste tópico.
  • Estruturas (Structs)
    • Structs são estruturas de dados que, diferentemente das classes, são tipos de valor.
  • Matrizes (Arrays)
    • Uma matriz (array) é uma estrutura de dados que contém um número de variáveis que são acessadas por meio de índices computados.
  • Interfaces
    • Uma interface define um contrato que pode ser implementado por classes e estruturas. Uma interface pode conter métodos, propriedades, eventos e indexadores. Uma interface não fornece implementações dos membros que define – apenas especifica os membros que devem ser fornecidos por classes ou estruturas que implementam a interface.
  • Enumerações (Enums)
    • Um tipo de enumeração é um tipo de valor distinto com um conjunto de constantes nomeadas.
  • Delegates
    • Um tipo de delegate representa referências a métodos com uma lista de parâmetros e um tipo de retorno específicos. Os delegates tornam possível tratar métodos como entidades que podem ser atribuídas a variáveis e passadas como parâmetros. Os delegates são semelhantes ao conceito de ponteiros de função encontrados em algumas outras linguagens, mas, diferentemente dos ponteiros de função, os delegates são orientados a objeto e fortemente “tipados”.
  • Atributos (Attributes)
    • Os atributos permitem que os programas especifiquem informações declarativas adicionais sobre tipos, membros e outras entidades.

Gostou do conteúdo? Utilizei este texto como guia para o primeiro dia de treinamento de uma empresa que possui desenvolvedores interessados em aprender C#, e as particularidades do dotnet core que irei detalhar mais para frente.

Mantenha-se atualizado sobre as novidades, me siga no LinkedIn (https://www.linkedin.com/in/felipedealmeida). Caso as postagens não sejam suficientes, me chame por inbox para que eu possa ajudar melhor a você e ao seu time de desenvolvedores.

Submit a Comment