Disposer и Finalizer - это не одно и то же в C #.
Утилизатор реализует вызов для явного удаления используемых ресурсов, но не памяти в них. Пользователь вашего объекта должен вызывать это.
Вы можете использовать финализатор в C #, чтобы гарантировать, что даже если ваш утилизатор не вызван, вы все равно не потеряете ресурсы. Т.е. .Net гарантирует, что он попытается запустить ваш утилизатор до того, как он действительно соберет мусор.
XmlSerializer отвечает за то, чтобы не утечка памяти, если в вызове есть исключение. Если это произойдет, вы обнаружите ошибку в .Net и можете сообщить о ней. Если вы вызываете десериализацию, и она выдает исключение, вы не получаете объект обратно, он ушел ...
. Сборщик мусора .Net работает, кстати, это одна из бесплатных возможностей, которую вы получаете с управляемым языком, поскольку вам не нужно беспокоиться об очистке памяти (в большинстве случаев), чтобы вы могли сосредоточиться на ваш код делает и получите это правильно.