Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
- 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.
- Międzyplatformowe: Języki Python i C# to języki międzyplatformowe. Aplikacje napisane w obu językach mogą być uruchamiane na wielu platformach.
- 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ń.
- 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.
-
Async / Await: Funkcje języka Python
asynciawaitzostały bezpośrednio zainspirowane obsługą języka C#asynciawait. -
Dopasowywanie wzorców: wyrażenia i dopasowywanie wzorców w języku
matchPython są podobne do wyrażeń dopasowywania wzorcówswitchw języku C#. Służą one do sprawdzania złożonego wyrażenia danych w celu określenia, czy jest on zgodny ze wzorcem. -
Słowa kluczowe instrukcji: Python i C# mają wiele wspólnych słów kluczowych, takich jak
if,else,while,fororaz 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:
-
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 blokowychif. 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}. - 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.
- 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.
-
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-itertoolsipy-linqzapewniają podobne funkcje. - 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#:
- Typowanie strukturalne (kaczkowe): W języku C# typy mają nazwy i deklaracje. Z wyjątkiem krotek typy o tych samych strukturach nie są wymienne.
- REPL: Język C# nie ma pętli RePL (Read-Eval-Print Loop) w celu szybkiego tworzenia prototypów rozwiązań.
-
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
- Przewodnik po języku C#: Ogólne omówienie wszystkich funkcji języka C#.
- Samouczki dla początkujących: nauka języka C# krok po kroku z interaktywnymi lekcjami.
- Co można utworzyć za pomocą języka C#: Eksploruj typy aplikacji, które można utworzyć za pomocą języka C#.
- Podstawy języka C#: Poznaj system typów, programowanie obiektowe i nie tylko.