Відшукання ненадійних контактів

Сравнение неглубокого и глубокого копирования

Копирование объектов из одной переменной в другую по значению, а не по ссылке (т. е. копирование тем же способом, который используется при копировании структур) иногда оказывается делом весьма сложным. Поскольку конкретный объект может содержать большое количество ссылок на другие объекты — например, в виде своих полей, этот процесс может потребовать выполнения очень большого количества действий. Простое копирование каждого члена одного объекта в другой может не сработать, потому что некоторые из этих членов сами по себе могут иметь ссылочные типы. В .NET Framework все это учитывается. Почленное копирование простых объектов достигается за счет использования метода MemberwiseClone(), который наследуется от System.object. Данный метод является защищенным, однако не составляет никакого труда определить общий метод на объекте, который его использует. Копирование, которое обеспечивается этим методом, известно под названием неглубокогокопирования — в том смысле, что при его осуществлении не принимаются во внимание те члены, которые представляют собой ссылочные типы. Это означает, что ссылочные члены во вновь создаваемом объекте будут

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

Существует интерфейс, который мы можем реализовать и который позволяет выполнить эту процедуру стандартным образом: ICloneable. Если мы собираемся его применить, нам необходимо реализовать единственный метод, содержащийся в нем,— Clone(). Этот метод возвращает значение типа System.Object. Мы можем использовать совершенно произвольные способы обработки для получения этого объекта, реализуя тело этого метода так, как нам требуется. Другими словами, мы можем реализовывать процедуру глубокого копирования в зависимости от нашего желания (например, мы при необходимости можем реализовать и процедуру неглубокого копирования).

Нерідко в місцях пайки деталей згодом порушуються або стають ненадійними контакти. Виявити цю несправність іноді буває дуже важко. Однак, якщо зібрати транзисторний мультивібратор із частотою коливань 8 Гц, увести в одно з його пліч електромагнітне реле й прикріпити до якоря текстолітовий стрижень шириною 5-8 і довжиною 40-80 мм, те неважко відшукати ненадійний контакт. У цьому випадку досить доторкнутися вібруючим текстолітовим стрижнем по черзі до кожної пайки ремонтованого пристрою, щоб порушити ненадійний контакт і, таким чином, виявити місце поганого з'єднання деталей.