根据“通用实践和代码改进”标题,Resharper谈到了这一行:
If dt(0)("ThemeWidth").ToString.IndexOf("%") > "0" Then
headerPanel.Width = Unit.Percentage(dt(0)("ThemeWidth").ToString.Replace("%", ""))
“ String.IndexOf(string)是特定于文化的”,并鼓励我将其更改为:
If dt(0)("ThemeWidth").ToString.IndexOf("%", StringComparison.Ordinal) > "0" Then
headerPanel.Width = Unit.Percentage(dt(0)("ThemeWidth").ToString.Replace("%", ""))
为什么呢?添加“ StringComparison.Ordinal ”为我做了什么改进了这段代码?
答案 0 :(得分:2)
考虑以下示例:
Dim longText As String = "01234ss789ß"
Dim shortText As String = "ß"
Dim index1 As Integer = longText.IndexOf(shortText)
Dim index2 As Integer = longText.IndexOf(shortText, StringComparison.Ordinal)
天真地,你会期望IndexOf
返回10,因为“ß”符号只出现在字符串的最后。
但在某些文化中,ß符号被视为两个ss的别名,因此没有附加参数的IndexOf将在某些计算机上返回5,在其他计算机上返回10。
使用参数StringComparison.Ordinal时,所有文化差异都将被忽略,并且它将在所有计算机上以可预测的方式返回10。