String.IndexOf(Char) vs String.IndexOf(Char, StringCompariso



Resharper建议我使用:

int notesFirstSpaceIndex = notes.IndexOf(" ", StringComparison.Ordinal);

而不是:

int notesFirstSpaceIndex = notes.IndexOf(" ");

根据 https://msdn.microsoft.com/en-us/library/kwb0bwyd(v=vs.110).aspx String.IndexOf(char) 无论如何都使用 Ordinal:"此方法执行序号(不区分区域性)搜索"。

如果他们都使用 StringComparison.Ordinal,我会从使用推荐的方法中获得什么好处?

当您调用时:

int notesFirstSpaceIndex = notes.IndexOf(" ");

您正在传递一个字符串" " .

这意味着您正在使用该方法的以下重载:

public int IndexOf(string value)

引用上面的参考资料:

此方法使用当前区域性执行单词(区分大小写和区分区域性)搜索。

这意味着它相当于:

int notesFirstSpaceIndex = notes.IndexOf(" ", StringComparison.CurrentCulture);

关于差异(调用不带参数的重载与将默认值作为参数传递的相应重载之间),差异几乎为零。如果查看该方法的第一个重载的源代码,它实际上调用了将默认值作为参数值传递的方法的其他重载。

最新更新