Ну, я хотел хэшировать пароль, и я посмотрел, как ASP.net Identity делает в классе Microsoft.AspNet.Identity.Crypto
, и я пришел с этой функцией (которая используется для сравнения 2-х хэш-хэшей):
[MethodImpl(MethodImplOptions.NoOptimization)]
private static bool ByteArraysEqual(byte[] a, byte[] b)
{
if (object.ReferenceEquals(a, b))
{
return true;
}
if (((a == null) || (b == null)) || (a.Length != b.Length))
{
return false;
}
bool flag = true;
for (int i = 0; i < a.Length; i++)
{
flag &= a[i] == b[i];
}
return flag;
}
Это прямая копия с выхода отражателя...
Теперь мой вопрос: , что атрибут NoOptimization подходит для, и почему он должен быть там (что произойдет, если я его удалю)? Для меня это выглядит как реализация по умолчанию Equals() до for
-loop.
Я попытался взглянуть на IL, но для меня все это чушь:/