मान लीजिए मैं का यूनिकोड स्ट्रिंग के लिए प्रकार चार * एक सूचक है, और मैं लंबाई पता:मार्शल.PtrToStringUni() बनाम नई स्ट्रिंग()?
char* _unmanagedStr;
int _unmanagedStrLength;
और मैं 2 तरीके यह नेट स्ट्रिंग के लिए कनवर्ट करने के लिए है:
Marshal.PtrToStringUni((IntPtr)_unmanagedStr, _unmanagedStrLength);
और
new string(_unmanagedStr, 0, _unmanagedStrLength);
मेरे परीक्षण में, दोनों कॉल मुझे बिल्कुल वैसा ही परिणाम देता है, लेकिन new string()
तेजी Marshal.PtrToStringUni()
से 1.8x बार की तरह है।
उस प्रदर्शन में अंतर क्यों है? क्या दोनों के बीच कोई और कार्यात्मक अंतर है?