Roteiro para desenvolvedores do Python aprendendo o 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
async
eawait
do Python foram inspirados diretamente pelos suportesasync
eawait
do C#. - Padrões correspondentes: a expressão
match
do Python e os padrões correspondentes são semelhantes à expressão padrões correspondentesswitch
do 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.
Ao começar a aprender o C#, você aprenderá esses 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
;
instruções separadas e outros tokens{
e}
escopo do bloco de controle paraif
e 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-itertools
epy-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.
Por fim, há os recursos de linguagem Python que não estão disponíveis no C#:
- Digitação 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 observar o escopo de bloco.
Aprenda no C# se você souber que o Python é uma jornada tranquila. Os idiomas têm conceitos e expressões semelhantes a serem usados.
Colaborar conosco no GitHub
A fonte deste conteúdo pode ser encontrada no GitHub, onde você também pode criar e revisar problemas e solicitações de pull. Para obter mais informações, confira o nosso guia para colaboradores.