what's the use of string.Clone()?

This is useful since string implements ICloneable, so you can create a copy of clones for a collection of ICloneable items. This is boring when the collection is of strings only, but it's useful when the collection contains multiple types that implement ICloneable.

As for copying a single string it has no use, since it returns by design a reference to itself.


Not directly in answer to your question, but in case you are looking to actually clone a string, you can use the static string.Copy() method.


.Clone() in the above code is the same as the simple assignment. Also, string is immutable, so it will copy on write in both cases.

.Clone() would be a lot more useful in cases, where you are using different types, that implement the same interface (in this case IClonable) as you would not be able to use a simple assignment, but could still cast the object returned by Clone() to ICloneable and assign that reference. For instance iterating through a generic collection with ICloneable elements.