Pat*_*ick 305 c# string comparison equals
可能重复:
不同的字符串比较方法有什么区别
以下哪两个更有效?(或者可能还有第三种选择更好吗?)
string val = "AStringValue";
if (val.Equals("astringvalue", StringComparison.InvariantCultureIgnoreCase))
Run Code Online (Sandbox Code Playgroud)
要么
if (val.ToLowerCase() == "astringvalue")
Run Code Online (Sandbox Code Playgroud)
?
Sve*_*ven 262
如果您正在寻找效率,请使用:
string.Equals(val, "astringvalue", StringComparison.OrdinalIgnoreCase)
Run Code Online (Sandbox Code Playgroud)
序数比较可以比文化感知比较快得多.
ToLowerCase 但是,如果你要对同一个字符串进行大量的比较,那么这个选项可能是更好的选择.
与任何性能优化一样:测量它,然后决定!
Fre*_*els 164
第一个是正确的,恕我直言的效率更高,因为第二个"解决方案"实例化了一个新的字符串实例.
Mar*_*ell 32
该.ToLowerCase版本不会更快-它涉及的额外字符串分配(以后必须收集),等等.
就个人而言,我会用
string.Equals(val, "astringvalue", StringComparison.OrdinalIgnoreCase)
Run Code Online (Sandbox Code Playgroud)
这避免了文化敏感字符串的所有问题,但因此它避免了文化敏感字符串的所有问题.只有你知道在你的上下文中是否正常.
使用string.Equals静态方法避免了任何问题val是null.
Jam*_*xon 12
我对"效率"这类问题的一般答案几乎总是如此,其中任何版本的代码都是最易读的,效率最高.
话虽如此,我认为(val.ToLowerCase() == "astringvalue")大多数人一眼就能理解这一点.
我所指的效率在代码的执行中不是必需的,而是在所讨论的代码的维护和一般可读性方面.
前者最快。原来这val是不可变的,因此使用String.ToLowerCase()创建了一个新的字符串对象,而不仅仅是与字符串比较器的直接比较。如果您每秒执行多次此操作,则创建新的字符串对象可能会非常昂贵。
| 归档时间: |
|
| 查看次数: |
348957 次 |
| 最近记录: |