.Net Review
.Net Review
Канал о технологиях .Net и не только. Здесь вы найдете разборы, уроки, фишки технологий и языков программирования... https://t.me/dotnetreview
Читать 1 минуту

Управляемый и неуправляемый код C#

Image for post

В первом приближении управляемым кодом называется код, выполнение которого управляется средой выполнения. В этом случае соответствующая среда выполнения называется общеязыковой средой выполнения или средой CLR, независимо от реализации (Mono, .NET Framework или .NET Core). Среда CLR отвечает за использование управляемого кода, его компиляцию в машинный код и последующее выполнение. Кроме того, среда выполнения предоставляет несколько важных служб, таких как автоматическое управление памятью, границы безопасности, безопасность типа и т. д.

Сравните это с запуском программы C/C++, которая также называется "неуправляемым кодом". В мире неуправляемого кода практически за все отвечает программист. Сама программа представляет собой двоичный файл, который операционная система (ОС) загружает в память и запускает. За все остальное — от управления памятью до различных аспектов безопасности — отвечает программист.

Управляемый код пишется в одном из языков высокого уровня, которые могут выполняться в .NET, например C#, Visual Basic, F# и других. При компиляции кода, написанного на этих языках, с помощью соответствующего компилятора вы получаете не машинный код. Вы получаете код промежуточного языка, который затем компилируется и запускается средой выполнения. Язык C++ является исключением из этого правила, так как он позволяет создавать машинные неуправляемые двоичные файлы, которые запускаются в Windows.

Взаимодействие неуправляемого кода

Конечно же, среда CLR позволяет пересекать границы между управляемым и неуправляемым кодом, и даже в библиотеках базовых классов объем подобного кода довольно велик. Это называется взаимодействием или межпрограммным взаимодействием. Все это позволяет вам, например, заключить неуправляемую библиотеку в оболочку и вызвать ее. Но следует отметить, что после того как код пересекает границы среды выполнения, управление выполнением снова осуществляется в виде неуправляемого кода с соответствующими ограничениями.

Аналогично, C# — это язык, позволяющий использовать неуправляемые конструкции, такие как указатели, прямо в коде с помощью так называемого небезопасного контекста, указывающего часть кода, для которой выполнение не управляется средой CLR.

Итог

Простыми словами, не используя специальные библиотеки C# мы пишем управляемый CLR код. CLR берёт на себя обязанности сборки мусора, низкоуровневой реализации и т.д. C# позволяет писать неуправляемый код. Это значит используя специальный функционал мы можем работать например с указателями, сборкой мусора и т.д.

Источники: Docs

Спасибо за внимание!

Наш телеграмм канал: https://t.me/dotnetreview

589 просмотров
Добавить
Еще
.Net Review
Канал о технологиях .Net и не только. Здесь вы найдете разборы, уроки, фишки технологий и языков программирования... https://t.me/dotnetreview
Подписаться