So here the question is which is the better way to follow and the answar is the Option #4 because :
# By setting length equal to zero it make the same StringBuilder object re-usable without modifying the buffer Capacity.
# The .NET Framework 4.0 provides the "Clear" Method to StringBuilder class which is equivalent to this implementation. For more deatil please follow the link below :
A short description about StringBuilder class:
# The StringBuilder object keeps a buffer which holds the new data appended to it.
# The default capacity of the buffer is 16k and it can be maximum up to Int32.MaxValue.
# The Capacity of the buffer can be changeable using the property "Capacity".
# The StringBuilder object only allocates memory if the StringBuilder object buffer capacity is too small to holds the new data.
Concatenation operation [ String VS StringBuilder ]:
# String object concatenation operation always create a new object for each concatenation operation which indicates allocation of memory each time.
# However, StringBuilder object maintains a buffer to accommodate new data, So it only allocates memory if the new data size exceed the buffer capacity.
# So concatenation using StringBuilder object for random number of strings, is having some perfomance advantage over using string object .
For more detail please follow the link below: