Um momento
Todos os artigos
C++ 12 min de leitura

O Que É a Linguagem de Programação C#? Um Guia Simples da Linguagem da Microsoft para Apps, Sites e Jogos

Um guia simples e sem jargões sobre o C#, a popular linguagem da Microsoft por trás de jogos feitos na Unity, sites e apps de empresas. Entenda de onde vem o nome, como ele roda em quase qualquer aparelho e por que cuida da memória para você.

nbkhope
Nesta página

Se você já jogou Among Us, Hollow Knight ou Pokémon GO, visitou o Stack Overflow ou usou o sistema de um banco, de uma loja ou de um hospital, há uma boa chance de ter usado algo feito em C# (em inglês, pronuncia-se "C sharp"; no Brasil, muita gente diz "C sharp" mesmo).

O C# é uma linguagem de programação criada pela Microsoft e lançada em 2002. Ela foi pensada para ser rápida, segura e produtiva: uma linguagem em que dá para construir aplicativos grandes e confiáveis sem se preocupar com cada detalhezinho da memória do computador. Este artigo explica, em linguagem simples, o que é o C#, como ele funciona e onde você o encontra.

De onde vem o nome

O nome tem um duplo sentido esperto:

De onde vem o nome. Na música, C sustenido, ou dó sustenido, é a nota logo acima do C, o dó, mostrada numa pauta. No código, o símbolo # parece quatro sinais de mais, como se fosse o C++ e mais um pouco. Em inglês se pronuncia "C sharp", e a linguagem foi pensada como um passo adiante do C e do C++
  • Na música, em inglês as notas têm letras: C é o dó, e C♯ (C sharp) é o dó sustenido, meio tom acima. Então o C# é "o C, um tom acima".
  • No código, o sinal # parece quatro sinais de mais empilhados, uma brincadeira dizendo que é um passo além do C++.

O # do teclado não é exatamente o sinal musical de sustenido (♯), mas é o mais parecido que existe no teclado, então é o que todo mundo usa.

Quem criou, e por quê

No fim dos anos 1990, a Microsoft queria uma linguagem moderna para criar programas para Windows e sites, mais fácil e mais segura que o C++, mas ainda rápida. O projeto foi liderado por Anders Hejlsberg, um engenheiro dinamarquês que já tinha criado as populares ferramentas Turbo Pascal e Delphi (e que depois também criou o TypeScript).

A linguagem teve primeiro o codinome "Cool" e foi anunciada como C# em 2000. O C# 1.0 saiu no começo de 2002, junto com o .NET, a plataforma em que os programas em C# rodam.

Uma breve história do C#, numa linha do tempo. 2000: a Microsoft anuncia o C#, de codinome "Cool". 2002: sai o C# 1.0, junto com o .NET Framework. 2005: generics, uma receita para vários tipos. 2007: LINQ, perguntas sobre dados dentro do código. 2012: async/await, depois copiado por muitas linguagens. 2014: o .NET vira código aberto. 2016: o .NET Core roda no Linux e no macOS. 2025: saem o C# 14 e o .NET 10

Na primeira década, o C# era coisa principalmente de Windows. Isso mudou em 2014, quando a Microsoft abriu o código do .NET, e em 2016, quando o .NET passou a rodar também no Linux e no macOS. Hoje, o C# e o .NET são gratuitos, abertos e rodam em quase todo lugar, com uma versão nova lançada todo mês de novembro.

Como é o C#

Este é o primeiro programa clássico no C# moderno. É uma linha só:

Console.WriteLine("Hello, world!");

Console é a janela de texto, e WriteLine escreve uma linha de texto nela. Só isso.

Assim como o C++, o C# é orientado a objetos: você descreve um tipo de coisa como uma classe (uma planta) e depois cria objetos a partir dela. Veja um carrinho:

1var meuCarro = new Carro { Cor = "vermelho" };
2meuCarro.Acelerar();
3meuCarro.Acelerar();
4Console.WriteLine($"O meu carro {meuCarro.Cor} anda a {meuCarro.Velocidade} km/h");
5
6class Carro
7{
8    public string Cor { get; set; } = "";
9    public int Velocidade { get; private set; }
10
11    public void Acelerar() => Velocidade += 10;
12    public void Frear() => Velocidade = 0;
13}

Quando roda, ele mostra: O meu carro vermelho anda a 20 km/h.

Se você leu o artigo sobre C++, isso vai parecer familiar, com alguns extras. Por exemplo, private set quer dizer que só o próprio carro pode mudar a sua velocidade. Ninguém mais pode, escondido, colocá-la em 500 km/h. Pequenos cuidados de segurança como esse estão por todo o C#.

Como um programa em C# roda

O C# usa uma tradução em duas etapas, um pouco diferente do C e do C++:

Como um programa em C# roda. Program.cs, o código que você escreve, vai para o compilador C#, que o traduz uma vez para IL, instruções intermediárias universais. Depois, o runtime .NET termina a tradução em cada aparelho: Windows, macOS, Linux, Android e iPhone. Como uma receita escrita numa abreviação universal que um cozinheiro local termina em cada cozinha: compile uma vez, rode em vários tipos de aparelho
  1. O compilador C# traduz o seu código para IL (Intermediate Language, linguagem intermediária), um conjunto de instruções universais que não estão presas a nenhum tipo de computador.
  2. Quando o programa roda, o runtime .NET daquele aparelho traduz o IL para o código de máquina exato que aquele processador entende. Isso se chama compilação JIT (just-in-time, "na hora certa"), porque acontece na hora, conforme o programa precisa.

Pense numa receita escrita numa abreviação universal. Cada cozinha tem um cozinheiro local que lê a abreviação e prepara o prato com os ingredientes e utensílios que tem. Você escreve a receita uma vez, e ela funciona em cozinhas do mundo todo.

Memória que se cuida sozinha

No C, quem programa precisa devolver a memória à mão. No C++, os objetos se limpam sozinhos quando saem de cena. O C# vai um passo além, com um coletor de lixo (garbage collector):

O coletor de lixo, uma faxina que trabalha para você. O seu programa aponta para os objetos que ainda usa: jogador, placar e configurações. Outros objetos, menu antigo, mapa da fase 1 e texto temporário, ninguém mais alcança, então são marcados para limpeza. De tempos em tempos, o coletor de lixo acha o que nada mais aponta e libera essa memória. Nada de "free" para esquecer, e muito menos erros de memória. A troca: de vez em quando a faxina precisa de um instante para trabalhar

O coletor de lixo é como uma faxineira que passa de tempos em tempos. Tudo o que o seu programa ainda consegue alcançar (o jogador, o placar, as configurações) fica onde está. Tudo o que nada mais aponta (o menu antigo que você fechou, o mapa de uma fase que já terminou) é varrido, e essa memória é liberada.

Isso faz do C# uma linguagem com segurança de memória: os erros perigosos comuns em C e C++, como escrever além do fim de uma lista ou usar memória depois de devolvê-la, são bloqueados por padrão. O C# confere, por exemplo, que você nunca leia o item número 4 de uma lista com só 3 itens, e para com um erro claro em vez de corromper a memória em silêncio.

A troca: a faxina precisa de um instante para trabalhar de vez em quando, e quem programa tem um pouco menos de controle sobre exatamente quando a memória é liberada. Para a maioria dos aplicativos, é um ótimo negócio.

Ele é rápido?

Sim, surpreendentemente. Rodamos o mesmo programa simples, que conta todos os números primos abaixo de 2 milhões, em quatro linguagens, no mesmo notebook:

Teste de velocidade, o mesmo programa em quatro linguagens, contando os números primos abaixo de 2 milhões, do início ao fim, medido para este artigo como a mediana de 5 execuções num notebook Windows. C: 0,38 segundo. C#: 0,41 segundo. JavaScript: 0,53 segundo. Python: 29,63 segundos. Versões: GCC 14, .NET 10, Node.js 26 e Python 3.11. Os tempos incluem iniciar cada programa. Os resultados variam entre execuções, com o Python indo de 17 a 34 segundos, mas o padrão se mantém

O C# ficou logo atrás do C, mesmo com esses tempos incluindo a inicialização do runtime .NET. O Python, que é ótimo para muita coisa mas não foi feito para velocidade bruta, levou dezenas de vezes mais. Num teste simples como este, o tradutor JIT produz código de máquina quase tão bom quanto o do C.

Algumas ideias que o C# popularizou

O C# não só pegou ideias de outras linguagens; várias ideias dele se espalharam pelo mundo:

  • async/await (2012): um jeito simples de escrever código que espera algo demorado, como baixar um arquivo, sem travar o aplicativo. JavaScript, Python, Rust e muitas outras linguagens depois adotaram as mesmas palavras-chave.
  • LINQ (2007): um jeito de fazer perguntas sobre dados direto no código. Por exemplo, "desta lista de pessoas, me dê os adultos, em ordem de nome":
1var pessoas = new List<Pessoa>
2{
3    new("Maria", 34), new("Ana", 17), new("Pedro", 25), new("Lucas", 15),
4};
5
6var adultos = pessoas
7    .Where(pessoa => pessoa.Idade >= 18)
8    .OrderBy(pessoa => pessoa.Nome)
9    .Select(pessoa => pessoa.Nome);
10
11Console.WriteLine(string.Join(", ", adultos));
12
13record Pessoa(string Nome, int Idade);

Isso mostra Maria, Pedro. Dá para ler quase como uma frase em inglês: where (onde) a idade é 18 ou mais, order by (ordenar por) nome, select (selecionar) o nome.

Onde o C# é usado

Onde o C# é usado. Videogames: jogos feitos na Unity, como Among Us, Hollow Knight e Pokémon GO. Sites: o ASP.NET move sites como o Stack Overflow. Software de empresas: bancos, lojas, hospitais e escritórios. Apps para Windows: programas e ferramentas de computador. Serviços na nuvem: sistemas rodando no Azure e em outras nuvens. Apps de celular: apps de Android e iPhone com o .NET MAUI. A Unity, um dos motores de jogos mais populares, usa C# no código dos jogos, e por isso muitos criadores de jogos aprendem C# primeiro
  • Videogames: a Unity, um dos motores de jogos mais populares do mundo, usa C# no código dos jogos. Sucessos como Among Us, Hollow Knight, Cuphead e Pokémon GO foram feitos com a Unity. Se você quer criar jogos, o C# é uma primeira linguagem comum.
  • Sites e serviços on-line: o ASP.NET, a parte do .NET para a web, move muitos sites, inclusive o Stack Overflow, o famoso site de perguntas e respostas para programadores.
  • Software de empresas: bancos, seguradoras, varejistas e hospitais rodam muitos dos seus sistemas internos em C#.
  • Apps para Windows, serviços na nuvem e apps de celular: de ferramentas para computador a sistemas na nuvem Azure, da Microsoft, até apps de celular feitos com o .NET MAUI.

O C# é há muito tempo uma das linguagens mais usadas do mundo, e o índice de popularidade TIOBE o escolheu como "linguagem de programação do ano" de 2023.

O C# ao lado dos vizinhos

O C# ao lado dos vizinhos, um guia geral, não regras rígidas. C: não limpa a memória para você, velocidade altíssima, médio para começar, mais conhecido por sistemas operacionais e aparelhos. C++: limpa em parte, velocidade altíssima, difícil de começar, mais conhecido por motores de jogos e navegadores. C#: limpa a memória, velocidade alta, médio para começar, mais conhecido por jogos na Unity e apps de empresas. Java: limpa a memória, velocidade alta, médio para começar, mais conhecido por Android e grandes empresas. Python: limpa a memória, velocidade menor, fácil de começar, mais conhecido por IA, dados e scripts
  • C# vs. C e C++: eles têm a mesma cara (chaves, ponto e vírgula), mas o C# cuida da memória para você e impede muitos erros antes que aconteçam. O C e o C++ dão um controle mais direto, o que importa em sistemas operacionais e motores de jogos.
  • C# vs. Java: esses dois são primos próximos. Os dois rodam numa plataforma virtual, os dois usam coletor de lixo e os dois são enormes em software de empresas. Quando foi lançado, o C# era visto até como a resposta da Microsoft ao Java. Hoje, a escolha muitas vezes depende das ferramentas e das empresas ao seu redor.
  • C# vs. Python: o Python é mais fácil para começar e reina em IA e ciência de dados. O C# é mais rápido e pega mais erros antes do programa rodar, graças aos seus tipos rígidos (cada valor tem um tipo declarado, como número ou texto).

Vale a pena aprender C#?

  • Ótimos motivos: você quer criar jogos na Unity, construir sites ou aplicativos de empresas, ou desenvolver para Windows. O C# também é uma boa primeira linguagem de uso geral: rígido o bastante para ensinar bons hábitos, amigável o bastante para não assustar.
  • Bom saber: todas as ferramentas são gratuitas. O .NET SDK roda no Windows, no macOS e no Linux, e dá para escrever C# no Visual Studio, no Visual Studio Code ou em outros editores.

Um pequeno glossário

  • C#: uma linguagem de programação da Microsoft, lançada em 2002, pronunciada "C sharp".
  • .NET: a plataforma gratuita e de código aberto em que os programas em C# rodam.
  • IL (linguagem intermediária): instruções universais para as quais o C# é traduzido primeiro.
  • Runtime: a parte do .NET que roda o seu programa num aparelho.
  • Compilação JIT (na hora certa): traduzir o IL para código de máquina no próprio aparelho, enquanto o programa roda.
  • Classe / objeto: uma planta, e uma coisa construída a partir dela.
  • Coletor de lixo: um limpador automático que libera a memória que nada mais usa.
  • Segurança de memória: quando uma linguagem impede a maioria dos erros de memória por padrão.
  • Tipo: o tipo declarado de um valor, como número inteiro, texto ou data.
  • LINQ: o jeito do C# de fazer perguntas sobre dados no código.
  • async/await: palavras-chave para código que espera coisas demoradas sem travar.
  • Unity: um motor de jogos popular que usa C# no código dos jogos.
  • ASP.NET: a parte do .NET para criar sites e serviços web.

Concluindo

O C# é a resposta da Microsoft a uma grande pergunta: como manter boa parte da velocidade do C e do C++ deixando a programação mais segura e produtiva? A resposta junta uma aparência familiar, uma tradução em duas etapas que roda em quase qualquer aparelho e um coletor de lixo que cuida da memória para você.

Mais de 20 anos depois da estreia, o C# é gratuito, de código aberto e está em todo lugar: em jogos da Unity no seu celular, em sites e nos sistemas que mantêm bancos, lojas e hospitais funcionando. O nome resume bem: é o C, um tom acima.

Obrigado pela leitura!

Conhece alguém que vai gostar? Mande para essa pessoa.

Mais artigos

Read next

Comentários

Be kind and specific. Comments with links from new accounts appear after a moderator reviews them.