Делегаты можно сравнивать на равенство и неравенство. Два делегата равны, если они оба не содержат ссылок на методы или если они содержат ссылки на одни и те же методы в одном и том же порядке. Сравнивать можно даже делегаты различных типов при условии, что они имеют один и тот же тип возвращаемого значения и одинаковые списки параметров.
ПРИМЕЧАНИЕ
Делегаты, различающиеся только именами, считаются имеющими разные типы.
С делегатами одного типа можно выполнять операции простого и сложного присваивания, например:
Del d1 = new Del(o1.Do); // o1.Do
Del d2 = new Del(o2.Do); // o2.Do
Del d3 = dl + d2; // o1.Do и o2.Do
d3 += dl; // o1.Do, o2.Do и o1.Do
d3 -= d2; // o1.Do и o1.Do
Эти операции могут понадобиться, например, в том случае, если в разных обстоятельствах требуется вызывать разные наборы и комбинации наборов методов.
Делегат, как и строка string, является неизменяемым типом данных, поэтому при любом изменении создается новый экземпляр, а старый впоследствии удаляется сборщиком мусора.