Entwickler-Ecke
Basistechnologien - StringBuilder vs. MarshalAs(UnmanagedType.LPTStr)
Delete - Sa 01.09.18 17:52
Titel: StringBuilder vs. MarshalAs(UnmanagedType.LPTStr)
- Nachträglich durch die Entwickler-Ecke gelöscht -
Th69 - So 02.09.18 09:47
Beim StringBuilder gibst du ja die Größe (256 Bytes) schon im Konstruktor mit, während du bei der (unteren) String-Variante ja noch selber Speicher für den String reservieren müßtest, z.B. string _name = new string(' ', 256);
Es gäbe auch noch die Variante mittels eines byte- oder (für WideChar) char-Arrays (wie man es ja auch direkt in C bzw. C++ macht).
Ich persönlich finde die StringBuilder-Variante besser, da sie sich auch bei anderen C#-Projekten durchgesetzt hat (daß man nachher dann noch explizit (bzw. implizit) ToString() aufrufen muß, um an den eigentlichen String-Inhalt zu gelangen, sehe ich sogar eher positiv).
PS: Das "+ 1" bei _name.Capacity + 1 ist aber auch fehlerhaft, da du dann ja in deinem Beispiel 257 als Länge übergeben würdest (die abschließende '\0' muß ja bei der Puffergröße mitberechnet werden, d.h. bei einem Puffer von 256 Bytes kann der zurückgegebene String max. 255 Bytes groß sein).
Delete - So 02.09.18 14:00
- Nachträglich durch die Entwickler-Ecke gelöscht -
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!