Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Se você estiver migrando do Python para C# para uma nova função ou projeto, este artigo ajudará você a ser produtivo rapidamente. Ele destaca o que é familiar do Python e o que é diferente em C#.
C# e Python compartilham conceitos semelhantes. Esses constructos familiares o ajudam a aprender o C# quando você já conhece o Python.
- Orientado a objeto: Python e C# são linguagens orientadas aos objetos. Todos os conceitos em torno das classes no Python se aplicam no C#, mesmo que a sintaxe seja diferente.
- Multiplataforma: Python e C# são linguagens de multiplataforma. Os aplicativos escritos em qualquer idioma podem ser executados em várias plataformas.
- Coleta de lixo: ambas as linguagens empregam o gerenciamento automático de memória pela coleta de lixo. O runtime recupera a memória de objetos que não são referenciados.
- Fortemente tipado: Python e C# são linguagens fortemente tipadas. A coerção de tipos não ocorre de maneira implícita. Há diferenças descritas posteriormente, pois o C# é tipado estaticamente, enquanto o Python é digitado dinamicamente.
-
Assíncrono/Aguardar: os recurso
asynceawaitdo Python foram inspirados diretamente pelos suportesasynceawaitdo C#. -
Padrões correspondentes: a expressão
matchdo Python e os padrões correspondentes são semelhantes à expressão padrões correspondentesswitchdo C#. Use-as para inspecionar uma expressão de dados complexa para determinar se ela corresponde a um padrão. -
Palavras-chave de instrução: Python e C# compartilham muitas palavras-chave, como
if,else,while,for, e muitas outras. Embora nem todas as sintaxes sejam iguais, há similaridade suficiente para ler o C# se você conhecer o Python.
Sintaxe em um relance
Os exemplos a seguir mostram alguns padrões comuns lado a lado. Essas comparações não são exaustivas, mas oferecem uma sensação rápida das diferenças de sintaxe.
Anotações de tipo:
# Python
name: str = "Hello"
count: int = 5
// C#
string name = "Hello";
int count = 5;
Filtragem de lista (compreensão versus LINQ):
# Python
result = [x for x in items if x > 5]
// C#
var result = items.Where(x => x > 5).ToList();
Saiba mais: Visão geral do LINQ
Escopo do bloco (indentação versus chaves):
# Python
if count > 0:
print("positive")
// C#
if (count > 0)
{
Console.WriteLine("positive");
}
Definição de classe:
# Python
class Point:
def __init__(self, x: int, y: int):
self.x = x
self.y = y
// C#
record Point(int X, int Y);
Saiba mais: Registros
Principais diferenças
Ao aprender C#, você descobre estes conceitos importantes em que o C# é diferente do Python:
-
Recuo versus tokens: no Python, as linhas novas e o recuo são elementos sintáticos de primeira classe. No C#, o espaço em branco não é significativo. Tokens, como
;separam declarações, e outros tokens{e}controlam o escopo do bloco paraife outras instruções de bloco. Entretanto, para facilitar a leitura, a maioria dos estilos de codificação (incluindo o estilo usado nesses documentos) usa o recuo para reforçar os escopos de bloco declarados por{e}. - Digitação estática: no C#, uma declaração de variável inclui seu tipo. Reatribuir uma variável em um objeto de um tipo diferente gera um erro do compilador. No Python, o tipo poderá ser alterado quando for reatribuído.
- Tipos que permitem valor nulo: as variáveis no C# podem ser anuláveis ou não anuláveis. Um tipo não anulável é aquele que não pode ser nulo (ou nada). Ele sempre se refere a um objeto válido. Por outro lado, um tipo anulável pode se referir a um objeto válido ou nulo.
-
LINQ: as palavras-chave da expressão de consulta que compõem a Consulta Integrada à Linguagem (LINQ) não são palavras-chave no Python. Porém, as bibliotecas do Python, como
itertools,more-itertoolsepy-linq, fornecem funcionalidades semelhantes. - Genéricos: os genéricos no C# usam digitação estática no C# para fazer declarações sobre os argumentos fornecidos para os parâmetros de tipo. Um algoritmo genérico pode precisar especificar restrições que um tipo de argumento deve satisfazer.
Dica
Para saber mais sobre o sistema de tipos do C#, incluindo class vs. struct, genéricos e interfaces, visite a visão geral do sistema type na seção Conceitos Básicos.
Por fim, alguns recursos do Python não estão disponíveis em C#:
- Tipagem estrutural (pato): no C#, os tipos têm nomes e declarações. Exceto por tuplas, os tipos com a mesma estrutura não são intercambiáveis.
- REPL: o C# não tem um REPL (Read-Eval-Print Loop) para criar rapidamente protótipos de soluções.
-
Espaço em branco significativo: você precisa usar corretamente as chaves
{e}para indicar o escopo de bloco.
Aprender C#, se você já souber Python, é uma jornada suave. Os idiomas têm conceitos e expressões semelhantes a serem usados.
Próximas etapas
- Um tour por C#: obtenha uma visão geral de alto nível de todos os recursos do C#.
- Tutoriais iniciantes: aprenda o C# passo a passo com lições interativas.
- O que você pode criar com C#: explore os tipos de aplicativo que você pode criar com C#.
- Conceitos básicos do C#: aprofunde-se no sistema de tipos, na programação orientada a objetos e muito mais.