虽然检查输入是否为字符串类型的问题已关闭,但其中两个答案在我脑海中引发了一个微优化问题:以下两种解决方案中哪一种表现更好?
Reed Copsey提供了一个解决方案,使用Char.IsLetter
:
string myString = "RandomStringOfLetters";
bool allLetters = myString.All( c => Char.IsLetter(c) );
使用来自Mark Byers的正则表达式改编的解决方案:
string s = "RandomStringOfLetters";
bool allLetters = Regex.IsMatch(s, "^[a-z]+$", RegexOptions.IgnoreCase);
不想只问 Reed 或 Mark 的问题,我想我会写一个快速测试来确定哪个表现更好。问题是我没有做很多代码优化(我倾向于把代码可读性放在首位)。
除了在每个运行之前和之后获取时间戳之外,还有哪些其他(更好的?)选项可以确定哪个解决方案运行得更快?
编辑
我修改了Martin 的答案以使用Console.WriteLine(...)
并将其作为控制台应用程序运行。不确定LinqPad如何运行应用程序,但结果大致相同:
41 178