Menu
Coddy logo textTech

Folha de Consulta C#

Última atualização

Hello World e estrutura do programa

Instruções de nível superior (desde o .NET 6) permitem pular a classe repetitiva.

ElementoCódigo
Programa de nível superiorConsole.WriteLine("Hello, World!");
Importar um namespaceusing System;
Ponto de entrada clássicostatic void Main(string[] args) { ... }
Exibir uma linhaConsole.WriteLine("text");
Ler uma linhastring s = Console.ReadLine();
Interpolação de stringConsole.WriteLine($"Hi {name}");
Comentários// line e /* block */

Tipos de dados

TipoDescrição
intInteiro com sinal de 32 bits
longInteiro com sinal de 64 bits
double / floatNúmeros de ponto flutuante
decimalDecimal de alta precisão (dinheiro)
booltrue ou false
charCaractere Unicode único
stringTexto imutável
varO compilador infere o tipo
int?Tipo de valor anulável

Variáveis

OperaçãoSintaxe
Declarar e inicializarint x = 5;
Inferência de tipovar name = "Ada";
Constanteconst double Pi = 3.14159;
Campo somente leiturareadonly int id;
Referência anulávelstring? maybe = null;
Coalescência de nulosvar y = maybe ?? "default";
Condicional de nulosint? len = text?.Length;

Controle de fluxo

InstruçãoSintaxe
If / elseif (x > 0) { ... } else { ... }
Instrução switchswitch (n) { case 1: ...; break; default: ...; }
Expressão switchvar s = n switch { 1 => "one", _ => "other" };
Laço whilewhile (i < n) { ... }
Laço do-whiledo { ... } while (i < n);
Laço forfor (int i = 0; i < n; i++) { ... }
Laço foreachforeach (var item in list) { ... }
Break / continuebreak; sai de um laço, continue; pula para a próxima iteração

Métodos

OperaçãoSintaxe
Definir um métodoint Add(int a, int b) { return a + b; }
Corpo de expressãoint Add(int a, int b) => a + b;
Sem valor de retornovoid Greet() { ... }
Parâmetro opcionalint Pow(int b, int e = 2) { ... }
Argumentos nomeadosPow(b: 2, e: 3);
Parâmetro outbool TryParse(string s, out int n) { ... }
Método estáticostatic int Square(int x) => x * x;
Expressão lambdaFunc<int, int> f = x => x * 2;

Classes e OOP

OperaçãoSintaxe
Definir uma classeclass Dog { ... }
Propriedade automáticapublic string Name { get; set; }
Propriedade somente leiturapublic int Id { get; }
Construtorpublic Dog(string name) { Name = name; }
Criar um objetovar d = new Dog("Rex");
Herançaclass Puppy : Dog { ... }
Interfaceinterface IRunnable { void Run(); }
Sobrescrever um métodopublic override void Speak() { ... }
Record (imutável)record Point(int X, int Y);

Coleções

Coleções genéricas de System.Collections.Generic.

TipoUso e exemplo
List<T>Array dinâmico: list.Add(1); list.Count;
Dictionary<K, V>Chave-valor: dict["a"] = 1; dict.ContainsKey("a");
HashSet<T>Valores únicos: set.Add(5); set.Contains(5);
Queue<T>FIFO: q.Enqueue(x); q.Dequeue();
Stack<T>LIFO: s.Push(x); s.Pop();
Arrayint[] nums = { 1, 2, 3 };
Inicializador de coleçãovar l = new List<int> { 1, 2, 3 };
Iterar um dicionárioforeach (var kv in dict) { kv.Key; kv.Value; }

LINQ

Consulte coleções de forma fluente; de System.Linq.

OperaçãoSintaxe
Filtrarnums.Where(n => n > 0)
Projetar / mapearnums.Select(n => n * 2)
Ordenarnums.OrderBy(n => n) / OrderByDescending(...)
Primeira correspondêncianums.First(n => n > 5) / FirstOrDefault(...)
Any / allnums.Any(n => n < 0) / nums.All(n => n > 0)
Contar correspondênciasnums.Count(n => n > 0)
Agregarnums.Sum(), nums.Max(), nums.Average()
Agrupar poritems.GroupBy(i => i.Category)
Materializar.ToList() / .ToArray()

Padrões comuns (propriedades, async)

PadrãoSintaxe
Método asyncasync Task<int> GetAsync() { ... }
Await em uma taskvar result = await GetAsync();
Try / catchtry { ... } catch (Exception e) { ... }
Finallyfinally { ... } sempre executa
Using (dispose)using var file = File.OpenRead(path);
Formatação de string$"Total: {amount:C}"
Classe genéricaclass Box<T> { public T Value; }
Correspondência de padrõesif (obj is Dog d) { d.Bark(); }

A sintaxe, as coleções e as consultas LINQ de C# que você mais usa, em uma única página. Esta folha de consulta C# é uma referência rápida para escrever C# - os tipos de dados, o controle de fluxo, as classes, as coleções List/Dictionary, o LINQ e os padrões de propriedade e async que definem o código .NET idiomático.

Tudo aqui é C# padrão no .NET e roda com a CLI dotnet. Copie o que precisar ou teste qualquer trecho ao vivo no playground de C# - sem SDK para instalar.

Perguntas frequentes sobre a folha de consulta C#

Esta folha de consulta C# é gratuita?
Sim. Esta folha de consulta C# é totalmente gratuita, sem necessidade de cadastro. Salve nos favoritos e volte sempre que precisar consultar uma sintaxe, uma coleção ou um método LINQ.
Qual é a diferença entre tipos de valor e tipos de referência em C#?
Tipos de valor (int, double, bool, struct, enum) guardam seus dados diretamente e são copiados ao serem atribuídos ou passados a um método - alterar a cópia não afeta o original. Tipos de referência (class, string, arrays, List<T>) guardam uma referência a dados no heap, então duas variáveis podem apontar para o mesmo objeto e uma alteração por uma é visível pela outra. string é um tipo de referência, mas se comporta de forma imutável.
O que é LINQ e quando devo usá-lo?
LINQ (Language Integrated Query) é um conjunto de métodos como Where, Select e OrderBy que permitem filtrar, transformar e agregar coleções com chamadas legíveis e encadeáveis em vez de laços manuais. Use-o sempre que, de outra forma, escreveria um laço para construir uma lista filtrada ou projetada - é conciso e avaliado de forma preguiçosa até você chamar ToList() ou iterar.
Posso praticar C# online?
Sim. Abra o playground de C# para executar qualquer trecho desta folha de consulta no seu navegador - sem SDK para instalar. Quando quiser estrutura, o curso interativo e gratuito de C# da Coddy leva você passo a passo de variáveis e laços a classes, coleções e LINQ.
Esta folha de consulta é boa para iniciantes?
Sim. Ela está organizada dos blocos de construção mais comuns (tipos, controle de fluxo, métodos) até os avançados (LINQ, async, generics), de modo que você pode usar as seções de cima já no primeiro dia e ir avançando para o resto.
Coddy programming languages illustration

Aprenda C# com a Coddy

COMEÇAR