Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.
- 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.
- Multiplataforma: Python e C# são linguagens multiplataforma. Os aplicativos escritos em qualquer idioma podem ser executados em muitas plataformas.
- 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.
- 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.
-
Async / Await: Os recursos
asynceawaitdo Python foram diretamente inspirados pelo suporteasynceawaitdo C#. -
Correspondência de padrões: A expressão e a correspondência de
matchpadrõ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. -
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:
-
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 paraife 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}. - 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.
- 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.
-
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-itertoolsepy-linqfornecem funcionalidade semelhante. - 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#:
- 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.
- REPL: O C# não tem um Read-Eval-Print Loop (REPL) para prototipar soluções rapidamente.
-
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
- Uma visita guiada a C#: Obtenha uma visão geral de todas as funcionalidades de C#.
- Tutoriais para iniciantes: Aprende C# passo a passo com aulas interativas.
- O que podes construir com C#: Explora os tipos de aplicações que podes criar com C#.
- Fundamentos de C#: Aprofunde-se no sistema de tipos, programação orientada a objetos e muito mais.