相关疑难解决方法(0)

Marshal.PtrToStringUni()vs new String()?

假设我有一个char*类型的指针到unicode字符串,我知道长度:

char* _unmanagedStr;
int _unmanagedStrLength;
Run Code Online (Sandbox Code Playgroud)

我有2种方法将其转换为.NET字符串:

Marshal.PtrToStringUni((IntPtr)_unmanagedStr, _unmanagedStrLength);
Run Code Online (Sandbox Code Playgroud)

new string(_unmanagedStr, 0, _unmanagedStrLength);
Run Code Online (Sandbox Code Playgroud)

在我的测试中,两个调用都给出了完全相同的结果,但它new string()比1.8倍快Marshal.PtrToStringUni().

为什么这种性能差异?两者之间还有其他功能差异吗?

.net c# unsafe unmanaged marshalling

7
推荐指数
2
解决办法
2925
查看次数

标签 统计

.net ×1

c# ×1

marshalling ×1

unmanaged ×1

unsafe ×1