gpt4 book ai didi

c# - 为什么在这种情况下使用 StringComparison.Ordinal 被认为更可取?

转载 作者:行者123 更新时间:2023-11-30 15:22:52 27 4
gpt4 key购买 nike

我有这段代码:

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

...Resharper 建议更改为:

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

我明白为什么它有时很好,以及它与 InvariantCulture 的区别 here ,但我不明白为什么建议将其用于一些老掉牙的东西(“/”)。

这真的是一种更安全的查找 forwardwhacks 的方法,还是 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 将假设您知道自己在做什么。我知道你没有问过这最后一部分。只是为了完整性而添加它。

关于c# - 为什么在这种情况下使用 StringComparison.Ordinal 被认为更可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35091568/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com