Удивительно, что String.Clone() не возвращает копию строки, которую будет выполнять String.Copy(). Вместо этого он возвращает 'this', исходную строку.
Я хотел бы понять, почему команда .Net Framework решила пойти таким образом.
По MSDN:
Интерфейс ICloneable [...] требует, чтобы ваша реализация метод Clone возвращает копию текущего экземпляра объекта.
String.Clone() ясно не соответствует этому руководству.
Я знаю, что строки неизменяемы, но если неизменность была причиной здесь, String.Copy() также вернул бы this, но это не так.
Это, конечно, довольно теоретический вопрос.