Есть ли смысл избегать использования «небезопасных» в Mono? - PullRequest
5 голосов
/ 23 мая 2011

Недавно я столкнулся с тем, что мне нужно указать опцию «небезопасно» при работе с определенными концепциями в C # / Mono. Я должен не только указать опцию в своем коде, но и указать ее при компиляции, что вызывает ощущение «этот код небезопасен и опасен для использования». Странно то, что DllImport не нужен флаг unsafe, поэтому я могу создавать segfaults все, что я хочу в моем «безопасном коде». Есть ли какая-либо причина избегать небезопасного кода, который я пропустил?

1 Ответ

7 голосов
/ 23 мая 2011

DllImport - это хорошо известная концепция для большинства разработчиков на C #. Это также приводит к относительно небольшой области, где может произойти ошибка. С кодом unsafe вы можете создавать случайные сбои намного проще, и в местах, не связанных с вызовом unsafe (манипулируя областями памяти вне того, что, как вы думали, вы касались).

Это очень похоже на предупреждения компилятора - некоторые разработчики не обращают на них внимания, некоторые обращаются к «Все предупреждения как к ошибкам». Угадайте, что приводит к коду, который легче поддерживать?

Кроме того, сам DllImport не является хорошей идеей , если его можно избежать (из-за возможных поломок / пропущенных ошибок / проблем с переносимостью и т. Д.).

...