Исходя из мира javascript, я хотел познакомиться с C # и его средой NET. Поскольку разрыв между этими двумя языками казался мне огромным, я решил написать короткое введение. Однако, чтобы понять это введение, вы должны иметь немного знаний об основах программирования и основных концепциях.

📄 Содержание

«Чтобы быть хорошим профессиональным инженером, всегда поздно готовиться к экзаменам. Потому что он учит, как управлять временем и действовать в чрезвычайных ситуациях ».

- Билл Гейтс

1. Что такое C #?

Microsoft определяет это сами:

C # - это элегантный и типобезопасный объектно-ориентированный язык, который позволяет разработчикам создавать различные безопасные и надежные приложения, работающие на .NET Framework. Вы можете использовать C # для создания клиентских приложений Windows, веб-служб XML, распределенных компонентов, клиент-серверных приложений, приложений баз данных и многого, многого другого. Visual C # предоставляет расширенный редактор кода, удобные конструкторы пользовательского интерфейса, интегрированный отладчик и многие другие инструменты, упрощающие разработку приложений на основе языка C # и .NET Framework.

Синтаксис C # предоставляет такие функции, как:

  • типы значений, допускающие значение NULL (типы, которым можно присвоить как нормальный диапазон значений, так и значения NULL)
  • перечисления (специальные наборы именованных значений, которые сопоставляются с набором чисел)
  • делегаты (переменная ссылочного типа, содержащая ссылку на метод)
  • лямбда-выражения (анонимная функция, которую можно использовать для создания делегатов или типов дерева выражений)
  • прямой доступ к памяти

2. Примечания к некоторым ключевым словам C #

Синтаксис

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

Типы данных

Эти типы делятся на:

  • Типы значений, которым можно напрямую присвоить значение
  • Типы ссылок, которые хранят ссылку, такую ​​как объекты, динамики или строки.
  • Типы указателей, в которых хранится адрес памяти другого типа

Преобразование типов

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

Переменные, константы и операторы

На самом деле они не сильно отличаются от других языков. В C # они разделены на разные типы. В Интернете много контента с полным списком типов (пример).

Переменная - это имя области памяти, которой может управлять программа.

Константы рассматриваются как обычные переменные, за исключением того, что их значения не могут быть изменены после их определения.

Оператор сообщает компилятору о необходимости выполнения определенных математических или логических манипуляций.

Массивы и строки

Массив хранит последовательную коллекцию фиксированного размера элементов одного и того же типа. Массив используется для хранения набора данных, но часто более полезно думать о массиве как о коллекции переменных одного типа, хранящихся в смежных ячейках памяти.

Строки - это массив символов. В большинстве случаев ключевое слово string используется для объявления строковой переменной - это псевдоним для класса System.String.

Структуры и классы

Microsoft предоставляет отличное определение структур и классов:

Класс - это ссылочный тип. Когда объект класса создается, переменная, которой назначается объект, содержит только ссылку на эту память. Когда ссылка на объект присваивается новой переменной, новая переменная ссылается на исходный объект. Изменения, внесенные в одну переменную, отражаются в другой переменной, потому что обе они относятся к одним и тем же данным.

Структура - это тип значения. Когда структура создается, переменная, которой назначается структура, содержит фактические данные структуры. Когда структура назначается новой переменной, она копируется. Таким образом, новая переменная и исходная переменная содержат две отдельные копии одних и тех же данных. Изменения, внесенные в одну копию, не влияют на другую копию.

Как правило, классы используются для моделирования более сложного поведения или данных, которые должны быть изменены после создания объекта класса. Структуры лучше всего подходят для небольших структур данных, содержащих в основном данные, которые не предназначены для изменения после создания структуры.

Полиморфизм, наследование и инкапсуляция

Наследование вместе с инкапсуляцией и полиморфизмом является одной из трех основных характеристик (или столпов) объектно-ориентированного программирования.

Наследование позволяет создавать новые классы, которые повторно используют, расширяют и изменяют поведение, определенное в других классах.

Объектно-ориентированный принцип инкапсуляции помогает избежать дублирования взаимосвязей между информацией, позволяя скрыть внутреннее состояние и абстрактный доступ к нему через такие элементы типа, как методы, свойства и индексаторы.

▶ ️ Инкапсуляция помогает уменьшить взаимосвязь между объектами и повышает удобство сопровождения кода.

Полиморфизм позволяет вызывать методы производного класса через ссылку на базовый класс во время выполнения. Это удобно, когда вам нужно назначить группу объектов массиву, а затем вызвать каждый из их методов.

Что ж, это звучит очень сложно? Посмотрите эту потрясающую статью, она ооочень хорошо объясняет :)

Перегрузка оператора

В объектно-ориентированном языке программирования, таком как C #, перегрузка операторов обеспечивает гораздо более естественный способ реализации операций с пользовательскими типами. Предположим, что у нас есть класс, созданный для комплексного числа, и мы хотим выполнять все арифметические операции с этим типом. Один из способов сделать это - использовать такие функции, как Add, Subtract, внутри класса и иметь соответствующие функциональные возможности. Другой способ - заставить перегруженную версию операторов действовать с этим типом.

Интерфейсы

Интерфейс определяется как синтаксический контракт, которому должны следовать все классы, наследующие интерфейс. Интерфейс определяет "что" часть синтаксического контракта, а производные классы определяют "как" часть синтаксического контракта.

Интерфейсы содержат только объявление членов и определяют свойства, методы и события. Производный класс определяет сами члены в соответствии с выложенным интерфейсом. По сути, интерфейсы предоставляют стандартную структуру, которой будут следовать производные классы.

Пространства имен и «использование»

Используются

  • для организации классов .NET Framework
  • чтобы помочь контролировать объем имен классов и методов в более крупных проектах программирования

Доступ к пространствам имен осуществляется через ключевое слово using.

Большинство приложений C # начинаются с раздела директив using. В этом разделе перечислены пространства имен, которые приложение будет часто использовать, и избавляет программиста от необходимости указывать полное имя каждый раз, когда используется метод, содержащийся в нем.

Директивы препроцессора

Они инструктируют компилятор предварительно обработать информацию перед фактическим запуском компиляции.

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

Ознакомьтесь со списком директив препроцессора, чтобы понять, на что они способны.

3. Среда .NET (Core)

Я сосредоточусь на ASP.NET Core, так как это новейшая переработка ASP.NET, рассматриваемая как будущее фреймворка.

Microsoft определяет это как:

ASP.NET Core - это новая кроссплатформенная платформа с открытым исходным кодом для создания современных облачных приложений, подключенных к Интернету, таких как веб-приложения, приложения IoT и мобильные серверные части. Приложения ASP.NET Core могут работать в .NET Core или на полной платформе .NET Framework. Он был спроектирован так, чтобы предоставить оптимизированную среду разработки для приложений, которые развертываются в облаке или выполняются локально. Он состоит из модульных компонентов с минимальными накладными расходами, поэтому вы сохраняете гибкость при создании своих решений. Вы можете разрабатывать и запускать кроссплатформенные приложения ASP.NET Core в Windows, Mac и Linux. ASP.NET Core имеет открытый исходный код на GitHub.

Найдите время, чтобы хорошо прочитать этот абзац, так как это официальное определение заранее отвечает на многие вопросы.

Раду Мадей заключил в своей статье:

Это один из самых захватывающих моментов для разработки .NET, поскольку он может писать код, который работает на устройствах Интернета вещей, телефонах, планшетах, ноутбуках, настольных компьютерах, голографических устройствах, серверах или в облаке, и делиться им между несколькими операционными системами. системы со знакомыми процессами и инструментами.

Он также говорит:

По сути, Microsoft создала версию .NET, позволяющую разработчикам писать кроссплатформенные и оптимизированные для облака приложения.

Во-первых, .NET кроссплатформенный. Он работает в Windows, macOS и Linux, что позволяет разработчику совместно использовать и запускать один и тот же код на машинах с разными операционными системами без изменений кода и с минимальными изменениями или без изменений в процессе разработки. (Не упустите API для конкретных ОС!)

Но истинное новшество в .NET пришло с модуляризацией дизайна и архитектуры. Компилятор (Roslyn) и среда выполнения (CoreCLR) - это отдельные компоненты, которые позволяют использовать разные реализации (или даже писать свои собственные).

Каждая библиотека поставляется в виде пакета NuGet, поэтому, когда вы запускаете новый проект, у вас есть не библиотеки, а файл проекта (в настоящее время это .json, в будущем .csproj для обеспечения согласованности со всеми .NET projects) и Program.cs. По мере разработки приложения вы добавляете библиотеки по мере необходимости, что позволяет минимизировать размер приложения.

Он довольно хорошо резюмирует то, что я читал на разных сайтах и ​​в разных введениях. Ознакомьтесь с его статьей, чтобы узнать больше.

Заключение

Во время исследования и написания я не мог не учитывать тот факт, что по сравнению с огромным сообществом JavaScript / Node.js сообщество .NET и C # довольно мало и отличается.

Мне кажется, что Microsoft пытается адаптировать свою стратегию к новому цифровому веку и принимает во внимание большой вклад сообщества разработчиков ПО с открытым исходным кодом и устоявшиеся идеи из других систем веб-разработки.

Будет интересно посмотреть, как он будет развиваться в ближайшем будущем.

Полезные ссылки и кредиты

Please leave comments, feedback and suggestions as I am always trying to improve.
Share your thoughts - it's never been easier 😄