C# Guias

Guia da linguagem C#

Nesse guia de C# você aprenderá o necessário para criar os seus primeiros softwares com a linguagem de programação C#. Acesse agora mesmo!

há 1 ano 9 meses

Formação Desenvolvedor C#
Conheça a formação em detalhes

O C# é uma linguagem de programação multiparadigma criada pela Microsoft, sendo a principal da plataforma .NET. Por ser uma linguagem que suporta, entre outros paradigmas, a orientação à objetos, ela suporta conceitos comuns como encapsulamento, herança e polimorfismo. Trata-se também de uma linguagem fortemente tipada e case-sensitive, ou seja, faz diferenciação entre letras minúsculas e maiúsculas.

Além disso o C# é uma linguagem multiplataforma. Sendo assim, você pode utilizá-la para desenvolver para plataformas web, dispositivos móveis e aplicações desktop. Com a praticidade dessa linguagem, você pode, de forma relativamente fácil, desenvolver desde projetos mais simples até projetos complexos e multiplataforma.

Para ver mais detalhes sobre o C# recomendo a leitura do nosso artigo “O que é e como começar com C# (C Sharp)?

C# - Fundamentos
Curso C# - Fundamentos
Conhecer o curso

Como instalar o C# e nosso primeiro exemplo

Agora que já sabemos o que é o C# e suas principais características, estamos prontos para realizar a instalação e executar o nosso primeiro exemplo com a linguagem como podemos acompanhar em nosso artigo “Como instalar o C# e nosso primeiro exemplo”.

Conhecendo variáveis e constantes

O C# é uma linguagem de tipagem estática, ou seja, existe um sistema de tipos bem definido e que é validado durante o tempo de compilação do código. Além disso o C# também é uma linguagem fortemente tipada, isso significa que o C# não irá realizar conversão automática de tipos, caso alguma conversão seja necessária ela deve ser feita de forma explícita pela pessoa que está desenvolvendo o software.

Por padrão, o C# possui em sua biblioteca padrão diversos tipos de dados, abaixo estão listados os mais comuns de serem utilizados:

  • byte: um inteiro com valor 8 bits, onde seu intervalo de valores vai do -128 até o 127. É um dado leve, que ocupa pouco espaço em memória;
  • char: trata-se de um único caractere unicode de 16 bits. Seu intervalo de valores vai do ‘\u0000’ ou 0 até o valor máximo ‘\uffff’ ou 65535. É utilizado para armazenar caracteres de maneira isolada;
  • string: trata-se de um conjunto de caracteres de tamanho indefinido onde cada um dos caracteres possui o tamanho de dois bytes;
  • short: trata-se de um valor inteiro de 16 bits. Seu intervalo de valores vai do -32.768 até o 32.767;
  • int: trata-se de um valor inteiro de 32 bits. Suporta valores de -2.147.483.648 a 2.147.483.647;
  • long: define um valor inteiro de 64 bits. Suporta valores de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807;
  • boolean: é um dos tipos de dados mais simples, pois ele pode armazenar apenas dois valores: true (verdadeiro) ou false (falso). É empregado para realizar testes lógicos, dentro de estruturas de decisão e repetição, por exemplo.
  • float: trata-se de um tipo de dado de ponto flutuante de 32 bits. Isso quer dizer que ele permite armazenar valores decimais entre 6 e 7 casas. Porém, o armazenamento em memória pode não representar necessariamente o valor repassado. Por exemplo, um float definido com “0,001” pode acabar sendo armazenado como “0,00100001”, e isso não somente no Java, já que isso é decorrência dos pontos flutuantes em geral. Por isso, o tipo float não deve ser usado para operações que precisam passar por várias operações aritméticas, como no caso de sistemas financeiros. Isso porque, a primeira vista, essa imprecisão pode não impactar, mas na sequência de operações realizadas, estas imprecisões podem começar a aparecer nos resultados;
  • double: representa um ponto flutuante de 64 bits. Por isso, ele permite armazenar números de até cerca de 15 casas decimais. A observação para o tipo float também é válida para o tipo double: por ser um tipo de dado que é armazenado por aproximação de valores, ele não deve ser utilizado em operações que demandam precisão absoluta.

Depois de vermos os tipos de dados, podemos criar nossas variáveis. Elas têm algumas regras, como por exemplo, devem ser claras e auto-explicativas.

string nomeDoAluno = "";
int idade = 0;

Também temos as constantes, que sob um ponto de vista prático são como variáveis, só que com o ponto de que seu valor não pode ser modificado. Isso quer dizer que, se você declara uma constante chamada MaioridadePenal com o valor 18, esse valor não poderá ser jamais modificado durante a execução da aplicação.

A maneira de declarar uma constante no C# é através da palavra reservada const:

const int MaioridadePenal = 18;

No artigo sobre variáveis e constantes no C#, podemos nos aprofundar no uso de constantes e ver mais exemplos e explicações sobre o uso de variáveis.

C# - Orientação a Objetos
Curso C# - Orientação a Objetos
Conhecer o curso

Estruturas condicionais e estruturas de repetição

As estruturas condicionais e de repetição são fundamentais e vem para nos ajudar no reaproveitamento de código.

As estruturas condicionais possibilitam ao programa tomar decisões e alterar o seu fluxo de execução. Isso possibilita ao desenvolvedor o poder de controlar quais são as tarefas e trechos de código executados de acordo com diferentes situações, como os valores de variáveis. Algumas estruturas condicionais no Java são o if/else e o switch/case.

Abaixo temos um exemplo simples da utilização do if/else. Nele verificamos se a pessoa é maior ou menor de idade, dependendo do valor que contiver na variável idade.

int idade = 18;
if (idade >= 18)
{
    Console.WriteLine("Você é maior de idade!");
}
else
{
    Console.WriteLine("Você é menor de idade!");
}

As estruturas de repetição, também conhecidas como loops (laços), são utilizadas para executar repetidamente uma instrução ou bloco de instrução enquanto determinada condição estiver sendo satisfeita. As principais estruturas de repetição são o for e o while.

Vejamos um exemplo abaixo utilizando o for. Aqui teremos uma variável começando em zero, onde, a cada rodada, ela irá somar +1. Isso irá se repetir até que a variável chegue até 10, encerrando assim esse bloco.

for (int i = 0; i <= 10; i++)
{
    Console.WriteLine("A variável i agora vale " + i);
}

Confira a execução desse código acima e outros exemplos com muitos mais detalhes em nosso artigo sobre estruturas de decisão e repetição no C#.

C# - LINQ
Curso C# - LINQ
Conhecer o curso

Orientação a Objetos

Como vimos na introdução deste artigo, o C# é uma linguagem orientada a objetos. O paradigma orientado a objetos traz boas vantagens, como a reutilização de código, a legibilidade e manutenibilidade do código, a natural modularização e a produção de código mais acessível, já que as estruturas criadas geralmente representam aspectos também existentes no mundo real.

Quando lidamos com o paradigma orientado a objetos, acabamos criando diversas unidades de software através de estruturas chamadas classes. A partir destas classes, podemos criar estruturas chamadas objetos, estruturas estas que interagem entre si. Esse é o motivo pelo qual o paradigma é chamado de orientação a objetos: todas as interações necessárias para que o software funcione ocorrem através de mensagens e comandos trocados entre estes objetos.

Uma classe nada mais é que um “molde” para definição de outras estruturas. Um exemplo seria uma classe chamada Pessoa. Todas as pessoas possuem características em comum, como nome, idade, sexo, etc, por isso elas podem fazer parte de uma mesma classe.

public class Pessoa
{
    public string Nome;
    public int Idade;
    public char Sexo
}

Como o nome diz, na orientação a objetos temos os objetos. Os objetos são estruturas que são criadas a partir das classes. Por exemplo, os objetos criados a partir da classe Pessoa, podem usufruir dos mesmos atributos e métodos definidos pela Classe.

Pessoa cleyson = new Pessoa();
pessoa.Nome = "Cleyson Lima";
pessoa.Idade = 20;
pessoa.Sexo = 'M';

Também vimos que ela tem acesso aos métodos, que são comportamentos e ações que os objetos podem ter. Nesse nosso exemplo, poderíamos colocar que toda Pessoa pode falar, andar, comer, etc.

cleyson.Falar();
cleyson.Andar();
cleyson.Comer();

Para ver mais exemplos e conceitos em relação ao paradigma orientado a objetos no C#, recomendo a leitura do artigo Orientação a objetos no C#.

C# - Entity Framework Core ORM
Curso C# - Entity Framework Core ORM
Conhecer o curso

O que é o gerenciador de dependências NuGet?

NuGet é um gerenciador de dependências para a plataforma .NET. Ele define como os pacotes desta plataforma são criados, publicados e consumidos. Fornecendo ferramentas para cada uma dessas funções.

Para saber mais sobre o NuGet e seu funcionamento recomendo a leitura do nosso artigo “O que é o NuGet?

Usando bibliotecas C# via NuGet

Instalar uma biblioteca com o NuGet é bem simples e podemos utilizar a CLI do .NET, para instalar uma biblioteca em um projeto basta executar o seguinte comando:

dotnet add package IdentificadorDoPacote

Então caso queira instalar o pacote Newtonsoft.Json que serve para realizar conversão de objetos C# no formato JSON basta executar o seguinte comando:

dotnet add package Newtonsoft.Json

Após execução do comando a biblioteca já terá sido baixado e já estará disponível no projeto, caso queira desinstalar um pacote basta então executar o seguinte comando:

dotnet remove package IdentificadorDoPacote

Então caso queira remover o pacote Newtonsoft.Json recentemente adicionada basta executar o comando:

dotnet remove package Newtonsoft.Json

Desenvolvedor C#
Formação Desenvolvedor C#
Conhecer a formação

Conclusão

O C# é uma linguagem bem poderosa e popular que possui um ecossistema bastante vasto, composto por diversas bibliotecas e frameworks para resolver os mais diferentes tipos de problemas como desenvolvimento web, desenvolvimento mobile, desenvolvimento desktop, inteligência artificial e várias outras possibilidades de uso dessa incrível linguagem.

Autor(a) do artigo

Cleyson Lima
Cleyson Lima

Professor, programador, fã de One Piece e finge saber cozinhar. Cleyson é graduando em Licenciatura em Informática pelo IFPI - Campus Teresina Zona Sul, nos anos de 2019 e 2020 esteve envolvido em vários projetos coordenados pela secretaria municipal de educação da cidade de Teresina, onde o foco era introduzir alunos da rede pública no mundo da programação e robótica. Hoje é instrutor dos cursos de Spring na TreinaWeb, mas diz que seu coração sempre pertencerá ao Python.

Todos os artigos

Artigos relacionados Ver todos