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 -