Я новичок в .NET и C #, и я пытаюсь выяснить, как работает этот код:
public static string CreateRandomPassword(int PasswordLength)
{
String _allowedChars = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ23456789";
Byte[] randomBytes = new Byte[PasswordLength];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetBytes(randomBytes);
char[] chars = new char[PasswordLength];
int allowedCharCount = _allowedChars.Length;
for(int i = 0;i<PasswordLength;i++)
{
///
/// I don't understand how this line works:
///
chars[i] = _allowedChars[(int)randomBytes[i] % allowedCharCount];
}
return new string(chars);
}
Я думаю, что у меня есть довольно хорошая справка по большей части этого.Я не смог понять следующую строку:
chars[i] = _allowedChars[(int)randomBytes[i] % allowedCharCount];
Я понимаю, что код генерирует случайные двоичные числа и использует эти случайные числа в цикле for, чтобы выбрать символ из строки _allowedChars.Чего я не понимаю, так это того, почему этот код использует модульный оператор (%) для получения значения индекса _allowedChars.
Спасибо за любую помощь