Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
C#, TypeScript и JavaScript являются членами семейства языков C. Сходство между языками помогает быстро повысить эффективность работы в C#.
-
Аналогичный синтаксис: JavaScript, TypeScript и C# находятся в семействе языков C. Это сходство означает, что вы уже можете читать и понимать C#. Существует несколько различий, но большая часть синтаксиса совпадает с JavaScript и C. Фигурные скобки и точка с запятой знакомы. Операторы управления, такие как
if
,else
,switch
, имеют сходные функции. Операторные инструкции цикловfor
,while
иdo
доwhile
одинаковы. Одни и те же ключевые слова дляclass
иinterface
находятся как в C#, так и в TypeScript. Модификаторы доступа в TypeScript и C#, отpublic
доprivate
, одинаковы. -
Маркер
=>
: все языки поддерживают облегченные определения функций. В C#они называются лямбда-выражениями в JavaScript, обычно они называются функциями со стрелками. - иерархии функций: все три языка поддерживают локальные функции, которые являются функциями, определенными в других функциях.
-
Async / Await: все три языка используют одинаковые
async
и ключевые словаawait
для асинхронного программирования. - сборка мусора: все три языка основаны на сборщике мусора для автоматического управления памятью.
-
модель событий: синтаксис
event
C#аналогичен модели JavaScript для событий объектной модели документа (DOM). - диспетчер пакетов: NuGet — это наиболее распространенный диспетчер пакетов для C# и .NET, аналогичный npm для приложений JavaScript. Библиотеки C# предоставляются в сборках.
По мере изучения C#вы узнаете о понятиях, которые не являются частью JavaScript. Некоторые из этих понятий могут быть знакомы с вами, если вы используете TypeScript:
-
система типов C#: C# — строго типизированный язык. Каждая переменная имеет тип, и этот тип не может измениться. Вы определяете типы
class
илиstruct
. Вы можете определить определенияinterface
, определяющие поведение, реализованное другими типами. TypeScript включает многие из этих понятий, но так как TypeScript построен на JavaScript, система типов не так строга. -
шаблонное сопоставление: шаблонное сопоставление позволяет создавать лаконичные условные операторы и выражения, основанные на форме сложных структур данных. Выражение
is
проверяет, соответствует ли переменная какому-либо шаблону. Выражение на основе шаблонаswitch
предоставляет широкий синтаксис для проверки переменной и принятия решений на основе его характеристик. - интерполяция строк и необработанные строковые литералы: интерполяция строк позволяет вставлять вычислянные выражения в строку, а не использовать позиционные идентификаторы. Сырьевые строковые литералы позволяют уменьшить необходимость в escape-последовательностях в тексте.
-
Типы, допускающие значение NULL и не допускающие значение NULL,: C# поддерживает типы значений, допускающие значение NULL,, и ссылочные типы, допускающие значение NULL, путем добавления суффикса
?
к типу. Для типов с возможностью значения NULL компилятор предупреждает вас, если вы не проверяете наличиеnull
перед разыменованием выражения. Для типов, не допускающих значение NULL, компилятор предупреждает вас, если вы можете присвоить значениеnull
этой переменной. Эти функции могут свести к минимуму возникновение System.NullReferenceExceptionв вашем приложении. Синтаксис может быть знаком благодаря использованию примера?
в TypeScript для необязательных свойств. - LINQ: языковой интегрированный запрос (LINQ) предоставляет общий синтаксис для запроса и преобразования данных независимо от его хранилища.
По мере того как вы узнаете больше, становятся очевидными другие различия, но многие из них незначительны.
Некоторые знакомые функции и идиомы из JavaScript и TypeScript недоступны в C#:
-
динамических типов: C# использует статическую типизацию. Объявление переменной включает тип, и этот тип не может измениться. В C# есть тип
dynamic
, который предоставляет привязку среды выполнения. -
прототипное наследование: наследование C# является частью объявления типа. Объявление C#
class
указывает любой базовый класс. В JavaScript можно задать свойство__proto__
, чтобы задать базовый тип для любого экземпляра. - интерпретируемый язык: код C# необходимо скомпилировать перед его запуском. Код JavaScript можно запускать непосредственно в браузере.
Кроме того, несколько дополнительных функций TypeScript недоступны в C#:
- типы объединения: C# не поддерживает типы объединения. Однако проектные предложения находятся в процессе разработки.
-
декораторы: C# не имеет декораторов. Некоторые распространенные декораторы, такие как
@sealed
, являются зарезервированными ключевыми словами в C#. Другие распространенные декораторы могут иметь соответствующие атрибуты. Для всех остальных декораторов вы можете создать собственные атрибуты. - более простительный синтаксис: компилятор C# анализирует код более строго, чем требует JavaScript.
Если вы создаете веб-приложение, рекомендуется использовать Blazor для создания приложения. Blazor — это веб-платформа с полным стеком, созданная для .NET и C#. Компоненты Blazor могут выполняться на сервере, как сборки .NET или на клиенте с помощью WebAssembly. Blazor поддерживает взаимодействие с любимыми библиотеками JavaScript или TypeScript.