Guide pour les développeurs Python qui se lancent dans l’apprentissage de C#
C# et Python partagent des concepts similaires. Ces constructions communes vous aident à vous familiariser avec C# quand vous connaissez déjà Python.
- Orienté objet : Python et C# sont des langages orientés objet. Tous les concepts relatifs aux classes dans Python s’appliquent en C#, même si la syntaxe est différente.
- Multiplateforme : Python et C# sont des langages multiplateformes. Les applications écrites dans ces langages peuvent s’exécuter sur de nombreuses plateformes.
- Garbage collection : les deux langages utilisent la gestion automatique de la mémoire par le biais du garbage collection. Le runtime récupère la mémoire à partir d’objets qui ne sont pas référencés.
- Fortement typé : Python et C# sont des langages fortement typés. Le forçage de type ne se produit pas implicitement. Des différences sont détaillées ci-dessous, car C# est un langage typé statiquement, tandis que Python est typé dynamiquement.
- Async/Await : la fonctionnalité
async
etawait
de Python s’inspire directement de la prise en charge des mots clésasync
etawait
dans C#. - Critères spéciaux : l’expression
match
de Python et les critères spéciaux des modèles sont similaires à l’expressionswitch
de critères spéciaux dans C#. Vous les utilisez pour inspecter une expression de données complexe et déterminer si elle correspond à un modèle. - Mots clés d’instruction : Python et C# ont de nombreux mots clés en commun, tels que
if
,else
,while
,for
et bien d’autres. Bien que les syntaxes de C# et de Python présentent certaines différences, elles se ressemblent assez pour que vous puissiez lire du code C# si vous maîtrisez Python.
En vous familiarisant avec C#, vous découvrirez certains concepts importants où C# diffère de Python :
- Mise en retrait ou jetons : dans Python, les nouvelles lignes et la mise en retrait sont des éléments syntactiques de première classe. En C#, l’espace blanc n’est pas significatif. Les jetons, comme les instructions distinctes
;
et les autres jetons{
et}
, contrôlent la portée de bloc pourif
et d’autres instructions de bloc. Toutefois, à des fins de lisibilité, la plupart des styles de codage (y compris le style utilisé dans ces documents) utilisent la mise en retrait pour renforcer les portées de bloc déclarées par{
et}
. - Saisie statique : en C#, une déclaration de variable inclut son type. La réaffectation d’une variable à un objet d’un type différent génère une erreur du compilateur. Dans Python, le type peut changer lors de la réaffectation.
- Types Nullable : en C#, les variables peuvent être nullables ou non-nullables. Un type non-nullable est un type qui ne peut pas être nul (ou vide). Il fait toujours référence à un objet valide. En revanche, un type Nullable peut faire référence soit à un objet valide, soit à un nul.
- LINQ : les mots clés d’expression de requête qui composent LINQ (Language Integrated Query) ne sont pas des mots clés dans Python. Toutefois, les bibliothèques Python telles que
itertools
,more-itertools
etpy-linq
fournissent des fonctionnalités similaires. - Génériques : les génériques C# utilisent le type statique C# pour formuler des assertions sur les arguments fournis pour les paramètres de type générique. Un algorithme générique peut exiger la spécification des contraintes qu’un type d'argument doit satisfaire.
Enfin, certaines fonctionnalités de Python ne sont pas disponibles en C# :
- Typage structurel (duck typing) : en C#, les types sont associés à des noms et à des déclarations. À l’exception des tuples, les types avec la même structure ne sont pas interchangeables.
- REPL : C# ne propose pas de boucle REPL (read-eval-print loop) pour prototyper rapidement des solutions.
- Espace blanc significatif : vous devez utiliser correctement les accolades
{
et}
pour noter la portée du bloc.
Apprendre à coder en C# lorsque vous maîtrisez Python est aisé. Ces langages présentent des concepts et des idiomes similaires.
Collaborer avec nous sur GitHub
La source de ce contenu se trouve sur GitHub, où vous pouvez également créer et examiner les problèmes et les demandes de tirage (pull requests). Pour plus d’informations, consultez notre guide du contributeur.