2013-10-07 2 views
4

От String.Clone() on MSDN:String.Clone() в чем его цель?

Возвращаемое значение не является независимой копией данного экземпляра; это просто другое представление тех же данных. Используйте метод Copy или CopyTo для , создайте отдельный объект String с тем же значением, что и этот экземпляр.

Поскольку метод Clone просто возвращает существующий экземпляр строки, есть небольшая причина для прямого его вызова.

Это мое понимание того, что строка является ссылочным типом означает, что вы будете только когда-либо получить ссылку на объект строки при вызове строки.

Поэтому почему существует String.Clone()? Какова цель?

+0

Вы правы, 'string' является ссылочным типом, но это также неизменны, поэтому он действует немного иначе, чем любой другой ссылочный тип. Однако это не меняет того факта, что метод 'Clone' и не очень полезен. – MarcinJuraszek

+0

Поскольку 'string.SubString (0)' не возвращает копию, но ту же ссылку, переданную ей, неинтуитивно. – leppie

ответ

2

Это полезно, так как строка реализует ICloneable, так что вы можете создать копию клонов для коллекции элементов ICloneable. Это скучно , когда коллекция имеет только строки, но это полезно, когда коллекция содержит несколько типов, реализующих ICloneable. Поскольку для копирования одной строки не имеет смысла, так как он возвращает по дизайну ссылку на себя.

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

Метод Клон() возвращает ссылку на строку, которая в настоящее время клонировали. Это не независимая копия строки на Куча. Это еще одна ссылка на той же строке.

и прочитать эту статью: Explanation for Clone with examples

Смежные вопросы