我最近遇到过这样一个事实:在使用C#/ Mono中的某些概念时,我需要指定“不安全”选项。我不仅需要在我的代码中指定选项,我还必须在编译时指定它,这会调用“此代码本质上不安全且使用风险”的感觉。这里奇怪的是DllImport不需要不安全标志,所以我可以在我的“安全代码”中创建我想要的段错误。有没有理由避免我忽略的不安全代码?
答案 0 :(得分:7)
对于大多数C#开发人员来说,DllImport是一个众所周知的概念。它还导致可能发生段错误的相对较小的区域。使用unsafe
代码,您可以更轻松地创建随机崩溃,并且在与unsafe
调用无关的位置(通过操作您认为触摸的内存区域)。
这很像编译器警告 - 一些开发人员不关注它们,有些人将“将警告视为错误”转为“全部”。猜猜哪些代码更易于维护?
此外,DllImport本身不是一个好主意如果可以避免(因为潜在的破损/遗漏错误/可移植性问题等等)。