假设我有一个指向Unicode字符串的char*指针,并且我知道它的长度:
在我的测试中,这两个调用都给我完全相同的结果,但是
这种性能差异是什么原因? 它们之间是否还有其他功能上的区别?
char* _unmanagedStr;
int _unmanagedStrLength;
我有两种方法将它转换为.NET字符串:
Marshal.PtrToStringUni((IntPtr)_unmanagedStr, _unmanagedStrLength);
并且
new string(_unmanagedStr, 0, _unmanagedStrLength);
在我的测试中,这两个调用都给我完全相同的结果,但是
new string()
比Marshal.PtrToStringUni()
更快约1.8倍。这种性能差异是什么原因? 它们之间是否还有其他功能上的区别?