Une méthode d'extension est le mauvais outil ici, car une lettre aléatoire de l'alphabet n'est pas liée à une lettre d'entrée (ou ai-je oublié quelque chose ici?).
static string alphabet = "QWERTYUIOPASDFGHJKLZXCVBNM";
static Random = new Random();
public static char RandomLetter()
{
return alphabet[random.Next(alphabet.Length)];
}
Modifier (en réponse aux commentaires):
Vous pouvez en faire une méthode d'extension du type Random
:
public static char NextRandomLetter(this Random random)
{
return alphabet[random.Next(alphabet.Length)];
}
(je choisi de ne pas l'appeler NextLetterOfTheAlphabet
car il doit évidemment être aléatoire)
La sécurité des threads pourrait être ajoutée en synchronisant sur une variable privée de la classe qui implémente cette méthode. Cependant, je pense que l'ensemble du processus de verrouillage est plus taxage CPU que tirant sur un nombre aléatoire:
public static char SynchronizedRandomLetter()
{
lock (random) // Although the lock is not random ;)
{
return alphabet[random.Next(alphabet.Length)];
}
}
pouvez ajouter une certaine sécurité de fil, mais regarde à peu près juste autrement. –
Cela pourrait être déclaré comme une méthode d'extension 'NextLetterOfTheAlphabet' sur' System.Random' si vous le vouliez vraiment, même si je suis assez sûr que ce n'est pas ce que l'OP voulait dire. – LukeH