c# - Is StringBuilder only preferred in looping scenarios? -
i understand stringbuilder
choice concatenating strings in loop, this:
list<string> mylistofstring = getstringsfromdatabase(); var thestringbuilder = new stringbuilder(); foreach(string mystring in mylistofstring) { thestringbuilder.append(mystring); } var result = thestringbuilder.tostring();
but scenarios stringbuilder
outperforms string.join()
or vice versa?
var thestringbuilder = new stringbuilder(); thestringbuilder.append("is "); thestringbuilder.append("ever "); thestringbuilder.append("idea?"); var result = thestringbuilder.tostring();
or
string result = string.join(" ", new string[] { "or", "is", "this", "a", "better", "solution", "?" });
any guidance appreciated.
edit: there threshold creation overhead of stringbuilder
not worth it?
it seems string.join
uses stringbuilder
under hood code (reflector):
public static string join(string separator, ienumerable<string> values) { using (ienumerator<string> enumerator = values.getenumerator()) { if (!enumerator.movenext()) { return empty; } stringbuilder sb = stringbuildercache.acquire(0x10); if (enumerator.current != null) { sb.append(enumerator.current); } while (enumerator.movenext()) { sb.append(separator); if (enumerator.current != null) { sb.append(enumerator.current); } } return stringbuildercache.getstringandrelease(sb); } }
so in scenario, not different much. prefer using stringbuilder
when trying concat string based on conditions.
Comments
Post a Comment