其他分享
首页 > 其他分享> > 在这种情况下,为什么最好使用StringComparison.Ordinal?

在这种情况下,为什么最好使用StringComparison.Ordinal?

作者:互联网

我有以下代码:

var whackPos = str.IndexOf("/");

… Resharper建议将其更改为:

var whackPos = str.IndexOf("/", StringComparison.Ordinal);

我知道有时候为什么它很好,并且它和InvariantCulture here之间也有区别,但是我不明白为什么建议将它推荐给一些旧的打怪(“ /”).

这真的是找到前锋的更安全方法,还是Resharper过于顽强的案例?

更新

对于某些事情,Resharper建议使用InvariantCulture.例如,此代码:

percentageQtyShippedCell.Value2 = _percentageOfQtyShipped.ToString();

…已更改为:

percentageQtyShippedCell.Value2 = _percentageOfQtyShipped.ToString(CultureInfo.InvariantCulture);

……在瑞沙珀(Resharper)敏锐的挑衅下.那么,为什么有时选择InvariantCulture,而有时选择Ordinal?

解决方法:

IndexOf()的单参数版本使用特定于区域性的比较.根据代码的运行位置,它的行为会有所不同.在许多情况下,比较Ordinal或InvariantCulture更为合适.这就是Resharper的建议.当您寻找’/’时,Ordinal就足够了,它也是最简单,最快的比较类型,因此Resharper建议这样做.

对于确实要使用区域性敏感的比较的情况,只需指定StringComparison.CurrentCulture,Resharper就会假定您知道自己在做什么.我知道您没有询问最后一部分.只是为了完整性而添加它.

标签:resharper,string-comparison,c
来源: https://codeday.me/bug/20191119/2033546.html