Поделиться через


Стратегия обучения разработчиков Java#

C# и Java имеют множество сходств. По мере изучения C#вы можете применить большую часть знаний, которые у вас уже есть из программирования на Java:

  1. Аналогичный синтаксис: Java и C# находятся в семействе языков C. Это сходство означает, что вы уже можете читать и понимать C#. Существуют некоторые различия, но большая часть синтаксиса совпадает с Java и C. Фигурные скобки и точка с запятой знакомы. Операторы управления, такие как if, switch elseсовпадают. Цикловые операторы for, whileи do...while одинаковы. Одни и interface те же ключевые слова для class обоих языков. Модификаторы доступа совпадают public private . Даже многие встроенные типы используют одни и те же ключевые слова: int, stringи double.
  2. Объектно-ориентированной парадигмы: Как Java, так и C# являются объектно-ориентированными языками. Понятия полиморфизма, абстракции и инкапсуляции применяются на обоих языках. Оба добавлены новые конструкции, но основные функции по-прежнему актуальны.
  3. Строго типизированные: Java и C# являются строго типизированными языками. Тип данных переменных объявляется явно или неявно. Компилятор обеспечивает безопасность типов. Компилятор перехватывает ошибки, связанные с типом в коде, перед запуском кода.
  4. Кроссплатформенные: Java и C# являются кроссплатформенными. Вы можете запускать средства разработки на любимой платформе. Приложение может работать на нескольких платформах. Платформа разработки не требуется для сопоставления целевой платформы.
  5. Обработка исключений: как Java, так и C# вызывают исключения для указания ошибок. Оба блока используются try - - catchfinally для обработки исключений. Классы exception имеют аналогичные имена и иерархии наследования. Одно из различий заключается в том, что C# не имеет концепции проверенных исключений. Любой метод может (в теории) вызвать любое исключение.
  6. Стандартные библиотеки: среда выполнения .NET и стандартная библиотека Java (JSL) поддерживают распространенные задачи. Оба имеют обширные экосистемы для других пакетов открытый код. В C# диспетчер пакетов — NuGet. Это аналогично Maven.
  7. Сборка мусора. Оба языка используют автоматическое управление памятью с помощью сборки мусора. Среда выполнения освобождает память от объектов, на которые не ссылается ссылка. Одно из различий заключается в том, что C# позволяет создавать типы значений в виде struct типов.

Вы будете продуктивно работать в C# практически сразу из-за сходства. По мере выполнения вы должны узнать о функциях и идиомах на C# , недоступных в Java:

  1. Сопоставление шаблонов: сопоставление шаблонов включает краткие условные операторы и выражения на основе формы сложных структур данных. Оператор is проверяет, является ли переменная "является" некоторым шаблоном. Выражение на основе switch шаблонов предоставляет широкий синтаксис для проверки переменной и принятия решений на основе его характеристик.
  2. Интерполяция строк и необработанные строковые литералы: интерполяция строк позволяет вставлять вычислянные выражения в строку, а не использовать позиционные идентификаторы. Необработанные строковые литералы позволяют свести к минимуму escape-последовательности в тексте.
  3. Типы, допускающие значение NULL и не допускающие значение NULL: C# поддерживает типы значений, допускающие значение NULL, и ссылочные типы, допускающие значение NULL, путем добавления ? суффикса к типу. Для типов, допускающих значение NULL, компилятор предупреждает вас, если вы не проверяете наличие перед null отменой ссылки на выражение. Для типов, не допускающих значение NULL, компилятор предупреждает вас, если вы можете назначить null значение этой переменной. Ссылочные типы, не допускающие значения NULL, свести к минимуму ошибки программирования, которые вызывают ошибку System.NullReferenceException.
  4. Методы расширения. В C#можно создавать методы, расширяющие класс или интерфейс. Методы расширения расширяют поведение типа из библиотеки или всех типов, реализующих заданный интерфейс.
  5. LINQ: интегрированный язык запросов (LINQ) предоставляет общий синтаксис для запроса и преобразования данных независимо от его хранилища.
  6. Локальные функции: в C#можно вложить функции в методы или другие локальные функции. Локальные функции предоставляют еще один слой инкапсуляции.

В C# существуют другие функции, которые не находятся в Java. Вы увидите такие функции, как async и awaitusing операторы, которые автоматически освобождают ресурсы, отличные от памяти.

Существуют также некоторые аналогичные функции между C# и Java, которые имеют тонкие, но важные различия:

  1. Свойства и индексаторы: свойства и индексаторы (обработка класса, например массива или словаря), поддерживают язык. В Java они называют соглашения об именовании методов, начиная с get и set.
  2. Записи: В C#записи могут быть либо типами ссылок, либо class struct (значение). Записи C# могут быть неизменяемыми, но не обязательно быть неизменяемыми.
  3. Кортежи имеют другой синтаксис в C# и Java.
  4. Атрибуты похожи на заметки Java.

Наконец, существуют функции языка Java, недоступные в C#:

  1. Проверенные исключения: в C#любой метод теоретически может вызвать любое исключение.
  2. Проверенная ковариация массива: в C#массивы не являются безопасными ковариантными. Если вам нужны ковариантные структуры, следует использовать универсальные классы и интерфейсы коллекции.

В целом, обучение C# для разработчика, опытного в Java, должно быть гладким. Вы найдете достаточно знакомых идиом, чтобы быстро быть продуктивными, и вы узнаете новые идиомы быстро.