Какова действительная функция настройки проекта C # & # 8220; Разрешить небезопасный код & # 8221;
Вопрос
Мне было интересно, есть ли в проекте C # параметр "Разрешить небезопасный код"? применяется только к небезопасному коду C # в самом проекте, или необходимо установить эту опцию при компоновке в собственной C ++ DLL? Как насчет связи в управляемой DLL, которая сама ссылается на собственную DLL? Что на самом деле делает этот вариант, под капотом?
Решение
Это связано с «небезопасным» Ключевое слово в C #. & Quot; небезопасным & Quot; отключает все проверки, которые обычно происходят, и позволяет получить прямой доступ к памяти. это не относится к вызову собственных C ++ DLL или интерфейсов.
Другие советы
Позволяет использовать «небезопасно» блок. р>
unsafe(...)
{
}
Это относится только к использованию блоков unsafe
(где могут использоваться указатели). Это не относится к P / Invoke.
Необходимо использовать небезопасный контекст {}. Раньше требовалось использовать sizeof (), но в более поздних версиях это уже не так.
Вам не нужно разрешать небезопасный код, если вы подключаетесь к другой библиотеке DLL, написанной на другом языке, например C.