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

时间:2016-02-08 23:52:57

标签: c# string

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?

,我会从使用推荐的方法中获得什么好处

1 个答案:

答案 0 :(得分:3)

致电时:

int notesFirstSpaceIndex = notes.IndexOf(" ");

您正在传递字符串" "

这意味着您使用的是以下overload of the method

public int IndexOf(string value)

引自上述参考文献:

  

此方法使用当前文化执行单词(区分大小写和文化敏感)搜索。

这意味着它相当于:

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

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