Итак, я написал небольшой и, как я изначально думал, простой метод на C #. Этот статический метод предназначен для использования в качестве простого генератора предложений пароля, и его код выглядит следующим образом:
public static string CreateRandomPassword(int outputLength, string source = "")
{
var output = string.Empty;
for (var i = 0; i < outputLength; i++)
{
var randomObj = new Random();
output += source.Substring(randomObj.Next(source.Length), 1);
}
return output;
}
Я вызываю эту функцию следующим образом:
var randomPassword = StringHelper.CreateRandomPassword(5, "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");
Теперь этот метод почти всегда возвращает случайные строки, такие как «AAAAAA», » BBBBBB »,« 888888 »и т. Д., Где я думал, что он должен возвращать такие строки, как« A8JK2A »,« 82mOK7 »и т. Д.
Однако, вот и странная часть; Если я помещаю точку останова и последовательно выполняю эту итерацию, я получаю взамен правильный тип пароля. В 100% других случаев, когда я не занимаюсь отладкой, я получаю ерунду вроде «AAAAAA», «666666» и т. Д.
Как это возможно? Любое предложение приветствуется! : -)
Кстати, моя система: Visual Studio 2010, C # 4.0, проект ASP.NET MVC 3 RTM с сервером разработки ASP.NET. Haven ' Я тестировал этот код в любых других средах.