假设我有一个指向 unicode 字符串的 char* 类型的指针,并且我知道长度:
char* _unmanagedStr;
int _unmanagedStrLength;
我有两种方法可以将其转换为 .NET 字符串:
Marshal.PtrToStringUni((IntPtr)_unmanagedStr, _unmanagedStrLength);
和
new string(_unmanagedStr, 0, _unmanagedStrLength);
在我的测试中,这两个调用都给了我完全相同的结果,但是new string()
比Marshal.PtrToStringUni()
.
为什么会有这种性能差异?两者之间还有其他功能差异吗?