use*_*675 1 c# extension-methods
如何开发一个可以从字母表(a,b,.... z)返回随机字符(单个字符)的扩展方法.
public static char RandomLetter(this char randomchar)
{
}
Run Code Online (Sandbox Code Playgroud)
扩展方法在这里是错误的工具,因为字母表中的随机字母与输入字母无关(或者我在这里遗漏了什么?).
static string alphabet = "QWERTYUIOPASDFGHJKLZXCVBNM";
static Random = new Random();
public static char RandomLetter()
{
return alphabet[random.Next(alphabet.Length)];
}
Run Code Online (Sandbox Code Playgroud)
编辑(回复评论):
你可以把它变成一个Random类型的扩展方法:
public static char NextRandomLetter(this Random random)
{
return alphabet[random.Next(alphabet.Length)];
}
Run Code Online (Sandbox Code Playgroud)
(我选择不打电话,NextLetterOfTheAlphabet因为它显然应该是随机的)
可以通过同步实现这些方法的类的私有变量来添加线程安全性.但是我认为整个锁定过程比拉出一个随机数更多的CPU负担:
public static char SynchronizedRandomLetter()
{
lock (random) // Although the lock is not random ;)
{
return alphabet[random.Next(alphabet.Length)];
}
}
Run Code Online (Sandbox Code Playgroud)