Пара вещей ...
Вам нужно сбрасывать strID
между каждым сгенерированным идентификатором, иначе он просто станет длиннее, длиннее и длиннее, и ... вы поняли.
Вместо жесткого кодирования случайного числа от 0 до 62 используйте свойство .Length
из strChar
. Таким образом, если вы измените символы, доступные в этой строке, ваш код не нужно будет изменять относительно выбранного случайного символа.
Говоря о случайном, вы должны объявить это как static
, чтобы он создается только один раз и повторно используется при каждом вызове. В противном случае, если вы щелкнете очень быстро, вы действительно можете получить те же результаты, поскольку при создании экземпляра Random без параметра в качестве начального значения используются системные часы.
Если ваш идентификатор не был уникальным, он выиграл ' не будет добавлено. В этом случае у вас будет меньше 1000 идентификаторов. Вы должны продолжать зацикливаться, пока не найдете тот, которого нет в списке.
Наконец, я бы просто использовал String.Join()
с Environment.NewLine
, чтобы добавить все идентификаторы в метку.
Вот как могут выглядеть эти изменения:
Dim strChar As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
Static rand As New Random
Dim strID As String
Dim IdCheck As New List(Of String) With {.Capacity = 1000} 'copyright stackoverflow inquiry
For count_ids As Integer = 0 To 999
Do
strID = ""
For count_chars As Integer = 0 To 7
strID += strChar(rand.Next(strChar.Length))
Next
Loop While IdCheck.Contains(strID)
IdCheck.Add(strID)
Next
lblRandomId.Text = String.Join(Environment.NewLine, IdCheck)