Моя статическая функция C # играет со мной… совершенно странно!

Итак, я написал небольшой и, как я изначально думал, простой метод на 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 ' Я тестировал этот код в любых других средах.

6
задан CoderBang 25 January 2011 в 23:28
поделиться