Teilen über


Roadmap für Python-Entwickler, die C# lernen

Bei C# und Python werden ähnliche Konzepte verwendet. Diese bekannten Konstrukte helfen Ihnen, C# zu erlernen, wenn Sie bereits mit Python vertraut sind.

  1. Objektorientiert: Sowohl Python als auch C# sind objektorientierte Sprachen. Alle Konzepte für Klassen in Python gelten in C#, auch wenn die Syntax unterschiedlich ist.
  2. Plattformübergreifend: Sowohl Python als auch C# sind plattformübergreifende Sprachen. Apps, die in einer der Sprachen geschrieben wurden, können auf vielen Plattformen ausgeführt werden.
  3. Automatische Speicherbereinigung: Beide Sprachen ermöglichen die automatische Speicherverwaltung über die automatische Speicherbereinigung (Garbage Collection, GC). Die Runtime fordert den Speicher von Objekten zurück, auf die nicht verwiesen wird.
  4. Stark typisiert: Sowohl Python als auch C# sind stark typisierte Sprachen. Die Typumwandlung tritt nicht implizit auf. Die Unterschiede werden später beschrieben (C# ist statisch typisiert, Python hingegen dynamisch).
  5. „async“ und „await“: Die Python-Features async und await sind direkt von der async- und await-Unterstützung von C# inspiriert.
  6. Musterabgleich: Der match-Ausdruck und Musterabgleich aus Python ähnelt dem switch-Ausdruck für den Musterabgleich in C#. Sie verwenden diese, um einen komplexen Datenausdruck zu untersuchen und festzustellen, ob er einem Muster entspricht.
  7. Schlüsselwörter für Anweisungen: Python und C# haben viele Schlüsselwörter gemeinsam (z. B. if, else, while und for). Obwohl nicht die gesamte Syntax identisch ist, gibt es genügend Gemeinsamkeiten, sodass Sie die C# lesen können, wenn Sie Erfahrung in der Verwendung von Python haben.

Wenn Sie sich mit C# vertraut machen, lernen Sie diese wichtigen Konzepte kennen, bei denen sich C# von Python unterscheidet:

  1. Einrückung im Vergleich zu Tokens: In Python sind Zeilenumbrüche und Einrückungen syntaktische Elemente der ersten Klasse. In C# sind Leerzeichen nicht signifikant. Tokens wie ; trennen Anweisungen, und andere Tokens wie { und } steuern den Blockbereich für if und andere Blockanweisungen. Aus Gründen der Lesbarkeit werden bei den meisten Programmierstilen (einschließlich des in dieser Dokumentation verwendeten Stils) Einrückungen verwendet, um die durch { und } deklarierten Blockbereiche zu verstärken.
  2. Statische Typisierung: In C# enthält eine Variablendeklaration ihren Typ. Durch das erneute Zuweisen einer Variablen zu einem Objekt eines anderen Typs wird ein Compilerfehler generiert. In Python kann sich der Typ bei der Neuzuweisung ändern.
  3. Nullable-Typen: C#-Variablen können Nullable- oder Non-Nullable-Typen sein. Ein Non-Nullable-Typ ist ein Typ, der nicht NULL (oder nichts) sein kann. Er bezieht sich immer auf ein gültiges Objekt. Im Gegensatz dazu kann ein Nullable-Typ entweder auf ein gültiges Objekt oder NULL verweisen.
  4. LINQ: Die Schlüsselwörter des Abfrageausdrucks, aus denen LINQ (Language Integrated Query) besteht, sind in Python keine Schlüsselwörter. Python-Bibliotheken wie itertools, more-itertools und py-linq bieten jedoch ähnliche Funktionen.
  5. Generics: C#-Generics verwenden die statische C#-Typisierung, um Assertionen zu den Argumenten zu erstellen, die für Typparameter bereitgestellt werden. Ein generischer Algorithmus muss möglicherweise Einschränkungen angeben, die ein Argumenttyp erfüllen muss.

Schließlich gibt es einige Python-Features, die in C# nicht verfügbar sind:

  1. Strukturelles Typisieren (Duck-Typing): In C# weisen Typen Namen und Deklarationen auf. Mit Ausnahme von Tupeln sind Typen mit derselben Struktur nicht austauschbar.
  2. REPL: C# verfügt nicht über eine read–eval–print-Loop (REPL), um schnell Prototyplösungen zu erstellen.
  3. Signifikante Leerzeichen: Sie müssen die geschweiften Klammern { und } ordnungsgemäß verwenden, um den Blockbereich festzulegen.

Wenn Sie mit Python vertraut sind, sollten Sie sich mit C# schnell zurechtfinden. Die Sprachen weisen ähnliche Konzepte und Idiome auf.