Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если вы переходите с Python на C# для новой роли или проекта, эта статья помогает быстро повысить эффективность работы. Он выделяет знакомые возможности Python и отличия в C#.
C# и Python используют аналогичные понятия. Эти знакомые конструкции помогут вам узнать C#, когда вы уже знаете Python.
- Объектно-ориентированное: Python и C# — это объектно-ориентированные языки. Все понятия, связанные с классами в Python, применяются в C#, даже если синтаксис отличается.
- Кроссплатформенный: Python и C# являются кроссплатформенными языками. Приложения, написанные на любом языке, могут работать на многих платформах.
- Сборка мусора. Оба языка используют автоматическое управление памятью с помощью сборки мусора. Среда выполнения освобождает память от объектов, на которые нет ссылок.
- Строго типизированные: Python и C# являются строго типизированными языками. Приведение типов не происходит неявно. Ниже описаны различия, так как C# статически типизированный, в то время как Python динамически типируется.
-
Async / Await: Возможности
asyncиawaitв Python были непосредственно вдохновлены поддержкойasyncиawaitв C#. -
Сопоставление шаблонов: Сопоставление шаблонов и выражений в Python похоже на сопоставление
matchи выражений C#. Они используются для проверки сложного выражения данных, чтобы определить, соответствует ли он шаблону. -
Ключевые слова инструкции: Python и C# используют множество ключевых слов, таких как
if,else,whileиforмногие другие. Хотя не весь синтаксис одинаков, есть достаточно сходства, чтобы вы могли понять C#, если знаете Python.
Синтаксис на первый взгляд
В следующих примерах показаны несколько распространенных шаблонов параллельно. Эти сравнения не являются исчерпывающими, но они позволяют быстро почувствовать различия синтаксиса.
Заметки типа:
# Python
name: str = "Hello"
count: int = 5
// C#
string name = "Hello";
int count = 5;
Фильтрация списка (понимание и LINQ):
# Python
result = [x for x in items if x > 5]
// C#
var result = items.Where(x => x > 5).ToList();
Дополнительные сведения: обзор LINQ
Область блокировки (отступы и фигурные скобки):
# Python
if count > 0:
print("positive")
// C#
if (count > 0)
{
Console.WriteLine("positive");
}
Определение класса:
# Python
class Point:
def __init__(self, x: int, y: int):
self.x = x
self.y = y
// C#
record Point(int X, int Y);
Дополнительные сведения: Записи
Основные отличия
При изучении C#вы узнаете, что эти важные понятия отличаются от C# от Python:
-
Отступы и маркеры: в Python новые линии и отступы являются элементами syntactic первого класса. В C# пробелы не имеют значения. Токены, такие как
;, разделяют операторы, а другие токены, такие как{и}, контролируют область видимости блоков дляifи других операторов блоков. Однако для удобства чтения большинство стилей программирования (включая стиль, используемый в этих документах), используют отступ для укрепления областей блоков, объявленных{и}. - Статическая типизация: в C#объявление переменной включает его тип. Переназначение переменной объекту другого типа создает ошибку компилятора. В Python тип может измениться при переназначении.
- Типы, допускающие значение NULL: переменные C# могут иметь значение NULL или не допускающие значение NULL. Тип, не допускающий значения null, — это тип, который не может принимать значение null (или ничто). Он всегда ссылается на допустимый объект. Тип nullable может ссылаться на допустимый объект или NULL.
-
LINQ: ключевые слова выражения запроса, составляющие интегрированный язык запросов (LINQ), не являются ключевыми словами в Python. Однако библиотеки Python, такие как
itertools,more-itertoolsиpy-linqпредоставляют аналогичные функциональные возможности. - Обобщения: обобщения C# используют статическую типизацию C# для утверждения об аргументах, предоставленных для параметров типа. Универсальному алгоритму может требоваться указать ограничения, которым должен удовлетворять тип аргумента.
Подсказка
Дополнительные сведения о системе типов C#, включая class и struct, универсальные шаблоны и интерфейсы, см. в разделе Обзор системы типов в разделе "Основы".
Наконец, некоторые функции Python недоступны в C#:
- Структурная (утки) типизация: в C# типы имеют имена и объявления. Кроме кортежей, типы, имеющие ту же структуру, не взаимозаменяемы.
- REPL: C# не имеет интерактивной оболочки (REPL) для быстрого создания прототипов решений.
-
Значительные пробелы: необходимо правильно использовать фигурные скобки
{и}для обозначения области видимости блока.
Изучение C#, если вы знаете Python, является легким процессом. Языки имеют аналогичные понятия и аналогичные идиомы для использования.
Дальнейшие шаги
- Обзор C#: ознакомьтесь с общими сведениями обо всех функциях C#.
- Учебники для начинающих: Учитесь C# шаг за шагом с помощью интерактивных уроков.
- Что можно создать с помощью C#: изучите типы приложений, которые можно создать с помощью C#.
- Основы C#: более подробное представление о системе типов, объектно-ориентированном программировании и т. д.