Mekkora költsége van, ha van egy pointerünk egy natív stringre, és azt vissza akarjuk kapni managed oldalon Sytem.Stringként? A példában a string egy delegate-en kereszüli callback során jön át a manazsolt oldalra.
Implict marshall:
static void Target1(string _str)
{
}
Kézi marshall:
static void Target2(IntPtr _str)
{
string str = Marshal.PtrToStringUni(_str);
}
Unsafe marshall:
unsafe static void Target3(IntPtr _str)
{
string str = new string((char*)_str);
}
Az utolsó megoldás van, hogy 10x gyorsabb, mint az első kettő. Ravasz.
Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.