Вопрос

Если класс реализован ICloneable, что это обозначает?

Это было полезно?

Решение

То есть IClonable.Clone метод. Документация гласит, что метод предназначен для клонирования объектов. Документация примечала конкретно, что клон может быть глубоким или мелким. Также отмечается полученный тип должен Быть того же типа, что и объект, который клонирован, но в системе типа нет гарантии, что она на самом деле так.

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

Другие советы

Это просто означает, что класс должен реализовать метод Clone Это возвращает объект, не более того. Таким образом, вы можете иметь метод, который принимает iclonable, а затем вы можете клонировать этот объект.

По сути, это просто позволяет классу клонировать:

http://msdn.microsoft.com/en-us/Library/system.iclonable.aspx.

При внедрении любого интерфейса вы должны определить методы в этом интерфейсе. В этом случае метод клона должен быть определен в вашем классе.

Пример от Microsoft:

public object Clone()
{
    return this.MemberwiseClone();
}

Iclonable не имеет смысла само по себе, но может быть полезен в сочетании с другими ограничениями (например, можно обеспечить, чтобы параметр должен быть FOO, который реализует Iclonable). Таким образом, можно иметь Foo, комбинацию Food, AdvancedFoo и CloneAleadvancedFoo, позволяя проводить производные, которые поддерживают клонирование, чтобы отличаться от тех, которые не говорят, но и позволяют проводить процедуры, которые ожидают к клонному фуму, чтобы принять к клонному производству FOO.

К сожалению, в то время как параметр функции, прошедший с помощью ICLONable и Foo Convasts, может использоваться в качестве ICLONable и в качестве FOO, без типовых попечителей, нет способа создать поле для выполнения таких критериев, и не существует никакого способа попечения поля. Средство лекарства, возможно, для создания Iclonable (из T iClonable (T)), которое содержит метод «клона», который возвращает T, и метод «самообслуживания», который также возвращает T (таким образом, поле, удерживающий Iclonable из FOO »можно получить доступ как FOO через метод« Self »). Небольшое уход потребуется, чтобы сделать это все работать, но шаблон должен быть довольно хорошим.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top