C#项目设置“允许不安全的代码”的实际function是什么

我想知道C#项目设置“允许不安全代码”是否仅适用于项目本身的不安全C#代码,还是在链接本机C ++ DLL时是否需要设置此选项? 如何链接自身链接到本机DLL的托管DLL? 这个选项在引擎盖下真正做了什么?

它与C#中的“unsafe”关键字有关。 “unsafe”会关闭通常会发生的所有检查,并允许您直接访问内存。 它不是指调用本机C ++ DLL或接口。

它允许您使用“不安全”块。

unsafe(...) { } 

这只涉及使用unsafe块(可以使用指针)。 它不管理P / Invoke。

必须使用不安全的{}上下文。 过去需要使用sizeof(),但在以后的版本中不再适用。

如果您要使用另一种语言(如C语言)编写的另一个DLL,则不需要允许不安全的代码。