Partilhar via


Roadmap para desenvolvedores Python aprendendo C#

Se está a passar de Python para C# para um novo cargo ou projeto, este artigo ajuda-o a tornar-se produtivo rapidamente. Destaca o que é familiar em Python e o que é diferente em C#.

C# e Python compartilham conceitos semelhantes. Essas construções familiares ajudam você a aprender C# quando você já conhece Python.

  1. Orientação a objetos: Python e C# são linguagens orientadas a objetos. Todos os conceitos em torno de classes em Python se aplicam em C#, mesmo que a sintaxe seja diferente.
  2. Multiplataforma: Python e C# são linguagens multiplataforma. Os aplicativos escritos em qualquer idioma podem ser executados em muitas plataformas.
  3. Coleta de lixo: Ambos os idiomas empregam gerenciamento automático de memória por meio da coleta de lixo. O tempo de execução recupera a memória de objetos que não são referenciados.
  4. Fortemente tipado: Python e C# são linguagens de tipagem forte. A coerção do tipo não ocorre implicitamente. Há diferenças descritas mais tarde, como C# é tipado estaticamente enquanto Python é digitado dinamicamente.
  5. Async / Await: Os recursos async e await do Python foram diretamente inspirados pelo suporte async e await do C#.
  6. Correspondência de padrões: A expressão e a correspondência de match padrões do Python são semelhantes à expressão de correspondência de padrões do C#. Você os usa para inspecionar uma expressão de dados complexa para determinar se ela corresponde a um padrão.
  7. Palavras-chave de instrução: Python e C# compartilham muitas palavras-chave, como if, else, while, for, e muitas outras. Embora nem toda a sintaxe seja a mesma, há semelhança suficiente para que você possa ler C# se souber Python.

Sintaxe num olhar

Os exemplos seguintes mostram alguns padrões comuns lado a lado. Estas comparações não são exaustivas, mas dão-te uma rápida noção 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 listas (compreensão vs. 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 de bloco (indentação vs. chaves):

# Python
if count > 0:
    print("positive")
// C#
if (count > 0)
{
    Console.WriteLine("positive");
}

Definição da 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: Recordes

Diferenças principais

À medida que aprendes C#, vais descobrindo estes conceitos importantes onde C# é diferente de Python:

  1. Indentation vs. tokens: Em Python, newlines e indentation são elementos sintáticos de primeira classe. Em C#, o espaço em branco não é significativo. Tokens, como ; separar declarações, e outros tokens { e } controlam o escopo do bloco para if e outras declarações de bloco. No entanto, para facilitar a leitura, a maioria dos estilos de codificação (incluindo o estilo usado nesses documentos) usa recuo para reforçar os escopos de bloco declarados por { e }.
  2. Tipagem estática: Em C#, uma declaração de variável inclui o seu tipo. Reatribuir uma variável a um objeto de um tipo diferente gera um erro do compilador. Em Python, o tipo pode mudar quando reatribuído.
  3. Tipos anuláveis: as variáveis 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). Refere-se sempre a um objeto válido. Por outro lado, um tipo anulável pode se referir a um objeto válido ou null.
  4. LINQ: As palavras-chave de expressão de consulta que compõem o Language Integrated Query (LINQ) não são palavras-chave em Python. No entanto, bibliotecas Python como itertools, more-itertoolse py-linq fornecem funcionalidade semelhante.
  5. Genéricos: Os genéricos em C# usam a digitação estática em C# para fazer afirmações sobre os argumentos fornecidos para parâmetros de tipo. Um algoritmo genérico pode precisar especificar restrições que um tipo de argumento deve satisfazer.

Sugestão

Para saber mais sobre o sistema de tipos de C# — incluindo class vs struct. , genéricos e interfaces — visite a visão geral do sistema de tipos na secção Fundamentos.

Por fim, algumas funcionalidades do Python não estão disponíveis em C#:

  1. Tipagem estrutural (duck typing): em C#, os tipos em C# têm nomes e declarações. Com exceção das tuplas, tipos com a mesma estrutura não são intercambiáveis.
  2. REPL: O C# não tem um Read-Eval-Print Loop (REPL) para prototipar soluções rapidamente.
  3. Espaço em branco significativo: você precisa usar corretamente as chaves { para anotar o escopo do } bloco.

Aprender C# se você conhece Python é uma jornada tranquila. As línguas têm conceitos semelhantes e expressões idiomáticas semelhantes para usar.

Próximos passos