Вместо генерации нескольких случайных классов лучше практиковать использование одного случайного класса, так как есть вероятность, что случайные классы могут иметь одинаковое начальное число и генерировать одинаковые числа. Это связано с тем, что он использует часы для создания начального числа и в цикле, где между каждой инициализацией может не быть много времени, несколько классов будут иметь одинаковое значение случайного начального числа и производить одинаковый набор «случайных» чисел, следовательно, один и тот же идентификатор генерируется несколько раз. Инициализация одного случайного класса устранит этот риск.
private static readonly Random generator = new Random();
private static readonly object syncLock = new object();
public static int RandomNumber(int min, int max)
{
lock(syncLock) {
return generator.Next(min, max);
}
}
А в вашем GenId()
методе:
string digiList = "0123456789";
string alphaList = "ABCDEFGHIJKLMNOPQRSTUVWXY";
string id = digiList[randomNumber(0, digiList.Length)].ToString();
id += alphaList[randomNumber(0, alphaList.Length)].ToString();
id += alphaList[randomNumber(0, alphaList.Length)].ToString();
id += digiList[randomNumber(0, digiList.Length)].ToString();
id += digiList[randomNumber(0, digiList.Length)].ToString();
return id;