Udostępnij za pośrednictwem


Harmonogram działania dla deweloperów języka Python uczących się języka C#

Jeśli przenosisz się z języka Python do języka C# w celu uzyskania nowej roli lub projektu, ten artykuł pomaga szybko uzyskać produktywność. Wyróżnia to, co jest znane z języka Python i co różni się w języku C#.

Języki C# i Python współdzielą podobne pojęcia. Te znane konstrukcje ułatwiają naukę języka C#, gdy znasz już język Python.

  1. Obiekt zorientowany: Języki python i C# są językami obiektowymi. Wszystkie pojęcia dotyczące klas w języku Python mają zastosowanie w języku C#, nawet jeśli składnia jest inna.
  2. Międzyplatformowe: Języki Python i C# to języki międzyplatformowe. Aplikacje napisane w obu językach mogą być uruchamiane na wielu platformach.
  3. Zbieranie śmieci: oba języki wykorzystują automatyczne zarządzanie pamięcią za pośrednictwem zbierania śmieci. Środowisko uruchomieniowe odzyskuje pamięć z obiektów, do których nie ma odwołań.
  4. Silnie typizowane: Języki Python i C# charakteryzują się silnym typizowaniem. Przymus typu nie występuje niejawnie. Istnieją różnice opisane później, ponieważ język C# jest statycznie typowany, podczas gdy język Python jest dynamicznie typowany.
  5. Async / Await: Funkcje języka Python async i await zostały bezpośrednio zainspirowane obsługą języka C# async i await.
  6. Dopasowywanie wzorców: wyrażenia i dopasowywanie wzorców w języku match Python są podobne do wyrażeń dopasowywania wzorcówswitch w języku C#. Służą one do sprawdzania złożonego wyrażenia danych w celu określenia, czy jest on zgodny ze wzorcem.
  7. Słowa kluczowe instrukcji: Python i C# mają wiele wspólnych słów kluczowych, takich jak if, else, while, for oraz wiele innych. Chociaż nie wszystkie składnie są takie same, istnieje wystarczające podobieństwo, które pozwala czytać C#, jeśli znasz Pythona.

Składnia w skrócie

W poniższych przykładach pokazano kilka typowych wzorców obok siebie. Te porównania nie są wyczerpujące, ale zapewniają szybki wgląd w różnice składni.

Adnotacje typów:

# Python
name: str = "Hello"
count: int = 5
// C#
string name = "Hello";
int count = 5;

Filtrowanie list (zrozumienie a LINQ):

# Python
result = [x for x in items if x > 5]
// C#
var result = items.Where(x => x > 5).ToList();

Dowiedz się więcej: OMÓWIENIE LINQ

Zakres bloku (wcięcie vs. nawiasy klamrowe):

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

Definicja klasy:

# Python
class Point:
    def __init__(self, x: int, y: int):
        self.x = x
        self.y = y
// C#
record Point(int X, int Y);

Dowiedz się więcej: Rekordy

Kluczowe różnice

Podczas nauki języka C#odkryjesz te ważne pojęcia, w których język C# różni się od języka Python:

  1. Wcięcia a tokeny: w języku Python nowe linie i wcięcia są elementami składniowymi pierwszej klasy. W języku C# białe znaki nie są istotne. Tokeny, takie jak ; oddzielają instrukcje, oraz inne tokeny { kontrolują zakres bloków dla } i innych instrukcji blokowych if. Jednak w celu zapewnienia czytelności większość stylów kodowania (w tym stylu używanych w tych dokumentach) używa wcięcia w celu wzmocnienia zakresów bloków zadeklarowanych przez { i }.
  2. Statyczne wpisywanie: w języku C# deklaracja zmiennej zawiera jej typ. Ponowne przypisywanie zmiennej do obiektu innego typu powoduje wygenerowanie błędu kompilatora. W języku Python typ może ulec zmianie po ponownym przypisaniu.
  3. Typy dopuszczające wartość null: Zmienne w C# mogą być nullem lub nie. Typ niezwiązany z wartością null jest taki, który nie może mieć wartości null (lub nic). Zawsze odwołuje się do prawidłowego obiektu. Z kolei typ dopuszczający wartość null może odwoływać się do prawidłowego obiektu lub wartości null.
  4. LINQ: Słowa kluczowe wyrażeń zapytań, które składają się na zintegrowane zapytanie językowe (LINQ), nie są słowami kluczowymi w języku Python. Jednak biblioteki języka Python, takie jak itertools, more-itertoolsi py-linq zapewniają podobne funkcje.
  5. Typy ogólne: Typy ogólne w C# używają statycznego typowania w C#, aby tworzyć asercje dotyczące argumentów podanych dla parametrów typu. Algorytm ogólny może wymagać określenia ograniczeń, które musi spełniać typ argumentu.

Porada

Aby dowiedzieć się więcej na temat systemu typów języka C#, w tym class vs. struct, typów ogólnych i interfejsów, odwiedź stronę Omówienie systemu typów w sekcji Podstawy.

Na koniec niektóre funkcje języka Python nie są dostępne w języku C#:

  1. Typowanie strukturalne (kaczkowe): W języku C# typy mają nazwy i deklaracje. Z wyjątkiem krotek typy o tych samych strukturach nie są wymienne.
  2. REPL: Język C# nie ma pętli RePL (Read-Eval-Print Loop) w celu szybkiego tworzenia prototypów rozwiązań.
  3. Istotne białe znaki: należy prawidłowo używać nawiasów klamrowych { i }, aby oznaczyć zakres bloków.

Nauka C#, jeśli znasz Pythona, to płynna podróż. Języki mają podobne pojęcia i podobne idiomy do użycia.

Dalsze kroki