Метод расширения здесь не тот инструмент, поскольку случайная буква из алфавита не связана с вводимой буквой (или я что-то здесь упускаю?).
static string alphabet = "QWERTYUIOPASDFGHJKLZXCVBNM";
static Random = new Random();
public static char RandomLetter()
{
return alphabet[random.Next(alphabet.Length)];
}
Редактировать (отвечая на комментарии):
Вы можете сделать это методом расширения для типа Random
:
public static char NextRandomLetter(this Random random)
{
return alphabet[random.Next(alphabet.Length)];
}
(я решил не называть это NextLetterOfTheAlphabet
, поскольку оно, очевидно, должно быть случайным)
Потоковая безопасность может быть добавлена путем синхронизации с закрытой переменной класса, который реализует этот метод. Однако я думаю, что весь процесс блокировки требует больше ресурсов процессора, чем выбор случайного числа:
public static char SynchronizedRandomLetter()
{
lock (random) // Although the lock is not random ;)
{
return alphabet[random.Next(alphabet.Length)];
}
}