С помощью Reflector метод Clear
из HashAlgorithm
просто вызывает частный метод Dispose
. Причина раскрытия метода с именем Clear
, вероятно, заключалась лишь в том, что разработчики класса думали, что это будет более подходящее имя для алгоритма хеширования. Вы видите похожие стили в других частях BCL, таких как Close
для System.IO.Stream
. Кроме того, в данном случае рекомендуется использовать блок с использованием блока
, который автоматически вызовет закрытый метод Dispose
после его завершения.
Вы должны позволить GC справиться с этим за вас. Это его работа.
Некоторые ресурсы должны быть удалены, например, соединения с БД и дескрипторы файлов, поэтому поместите их в , используя блок
(C #). Однако это не один из тех случаев.
Хотя метод Dipose ()
является закрытым, если вы приведете его к IDisposable
Вы можете получить к нему доступ. Однако, как уже говорили другие, Clear ()
вызовет его для вас.
Однако, лучший подход - заключить объявление и присвоение переменной в блок using ():
byte[] hashCode;
using(var hasher = new MD5CryptoServiceProvider())
{
hashCode = hasher.ComputeHash(data);
}