从C#调用非托管函数:我应该传递StringBuilder还是使用不安全的代码?
我有一个C#程序需要将char缓冲区传递给非托管函数.我发现两种似乎可靠的方法,但我不确定我应该选择哪种方式.这是非托管功能的签名.第一个选项是将缓冲区定义为StringBuilder,如下所示.这很简单,并且它可以工作,我想我基本上理解它为什么会起作用,因为StringBuilder在幕后有一个缓冲区,所以(我假设)interop层只是将StringBuilder编组为char*.另一种选择是使用不安全的代码.第二种方法是更多的代码,但它也更明确地发生了什么.这两种方法基本上是一样的吗?