ユニコード文字列へのchar*型のポインタがあり、長さがわかっているとします。
char* _unmanagedStr;
int _unmanagedStrLength;
そして私はそれを.NET文字列に変換する2つの方法があります:
Marshal.PtrToStringUni((IntPtr)_unmanagedStr, _unmanagedStrLength);
と
new string(_unmanagedStr, 0, _unmanagedStrLength);
私のテストでは、どちらの呼び出しでもまったく同じ結果が得られますが、new string()はの1.8倍の速度ですMarshal.PtrToStringUni()。
なぜそのパフォーマンスの違いがあるのですか?両者の間に別の機能的な違いはありますか?