Я смотрел код, реализующий интерфейс ICloneable
для одного из классов.
Класс был следующим:
public class TempClass
{
String[] names;
String[] values;
}
Был создан частичный класс, реализующий TempClass
public partial class TempClass:ICloneable
{
public Object Clone()
{
TempClass cloneClass = new TempClass();
String[] cloneNames = new String[this.names.Length - 1];
String[] cloneValues = new String[this.values.Length -1];
Array.Copy(this.names,cloneNames,this.names.Length);
Array.Copy(this.values,cloneValues,this.values.Length);
cloneClass.names = cloneNames;
cloneValues.values = cloneValues;
return cloneClass;
}
}
Мне было интересно, будет ли это допустимым способом сделать глубокую копию объекта? Здесь вызывают тревогу промежуточные структуры cloneNames
и cloneValues
, которые используются для копирования значений исходного объекта и имеют переменные-члены Names
и Values, указывающие на него, а затем возвращают ссылку на объект, созданную в методе клонирования.
Любые отзывы об этом фрагменте будут высоко оценены
Спасибо