Я искал код, который реализовал интерфейс 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, указывающие на него, а затем возвращают ссылку на объект, созданную в методе clone.
Любые отзывы по этому фрагменту будут высоко оценены
Спасибо