以下两种方法哪一种效率更高?(或许还有第三种更好的选择?)
string val = "AStringValue";
if (val.Equals("astringvalue", StringComparison.InvariantCultureIgnoreCase))
OR
if (val.ToLowerCase() == "astringvalue")
?
以下两种方法哪一种效率更高?(或许还有第三种更好的选择?)
string val = "AStringValue";
if (val.Equals("astringvalue", StringComparison.InvariantCultureIgnoreCase))
OR
if (val.ToLowerCase() == "astringvalue")
?
当前回答
你可能还想看看那个已经回答过的问题 c#中字符串比较方法的差异
其他回答
1st更有效(也是最好的选择),因为val.ToLowerCase()创建了一个新对象,因为字符串是不可变的。
你可能还想看看那个已经回答过的问题 c#中字符串比较方法的差异
如果你在寻找效率,可以使用这个:
string.Equals(val, "astringvalue", StringComparison.OrdinalIgnoreCase)
顺序比较可能比区域性比较快得多。
然而,如果您要对同一个字符串进行大量比较,ToLowerCase可能是更好的选择。
与任何性能优化一样:衡量它,然后决定!
对于这类关于“效率”的问题,我的一般答案几乎总是,哪个版本的代码最易读,是最有效的。
话虽如此,我认为(val.ToLowerCase() == "astringvalue")对大多数人来说一眼就能理解。
我所说的效率并不一定是指代码的执行,而是指所讨论的代码的维护和可读性。
我敢说最安全的方法是使用静态方法String。Equals可以减少val为null时出现NullReferenceException的可能性。