Why does String.Clone() returns the original string and not a copy of it?

Viewed 1314

Surprisingly, String.Clone() doesn't return a copy of a string as String.Copy() would do. Instead, it returns 'this', the original string.

I would like to understand why the .Net Framework team choose to go this way.

As per MSDN:

The ICloneable interface [...] requires that your implementation of the Clone method return a copy of the current object instance.

String.Clone() clearly doesn't follow this guideline.

I know that strings are immutable, but if immutability was the reason here, String.Copy() would also return this but it doesn't.

This is a rather theoretical question, of course.

3 Answers
Related