Можете ли вы написать блок кода С++ внутри С#?

Я где-то слышал, что вы можете спуститься на С++ непосредственно внутри кода С#. Как это делается? Или я неправильно понял?

Примечание. Я не имею в виду С++/CLI.

Ответы

Ответ 1

Возможно, вы думаете о unsafe blocks, где вы можете написать код, который очень похож на С++, поскольку вы можете использовать указатели.

Ответ 2

Вы слышали неправильно.

Ответ 3

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

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

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

Тем не менее, С# предоставляет средства для взаимодействия с внешним кодом на всех уровнях абстракции, от Platform-Invoke (вызывающие функции, написанные на C) до COM, для самых разных видов. Но сам С# напрямую не связан с этими вещами.

Ответ 4

Зачем вам это нужно? Вы можете ссылаться на родные библиотеки C, но я очень сомневаюсь, что вы можете запускать собственный код из управляемого кода.

Ответ 5

Вы можете легко взаимодействовать с объектами COM с .NET.