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);
}
では、2 番目の例のようにそれを行わない目的は何ですか? 私の最初の考えは、MSDN が提供するコードを使用するプログラマーは、アンマネージ リソースを使用しているという事実(これは正しい用語ですか?)を常に認識しているのに対し、私の実装を使用した場合はそうではないということでした。
他の考えはありますか?