仅作为创建 MD5 哈希的示例,微软提供了以下代码示例:
MSDN 代码
// in Helpers class
public static string GetMd5Hash(MD5 md5Hash, string input)
{
byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
return sBuilder.ToString();
}
并且使用它会像这样完成
public string CreateHash(string str)
{
using (var md5Hash = MD5.Create())
{
return Helpers.GetMd5Hash(md5Hash, str);
}
}
我的代码
我认为更改 Microsoft 为此提供的代码会使帮助方法的可重用性变得更容易:
// in Helpers class
public static string GetMd5Hash(string input)
{
using (var md5Hash = MD5.Create())
{
byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
return sBuilder.ToString();
}
}
因此,重用它会创建更少的代码行:
public string CreateHash(string str)
{
return Helpers.GetMd5Hash(str);
}
那么不像我在第二个例子中那样做的目的是什么?我最初的想法是,使用 MSDN 提供的代码的程序员总是会意识到他们使用非托管资源的事实(这是正确的术语吗?),而如果他们使用我的实现,他们就不会。
还有其他想法吗?