它没有正确排序这个简单的字符串,我测试它在 Microsoft Framework 3.5、4.0、4.5 和 4.5.1 RC 中发生...
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim strarray() As String = New String() _
{"a-n|o1|2004/02/12|", _
"an|n9|2004/02/09|", _
"an|o2|2003/12/30|"}
Array.Sort(strarray)
Debug.Print(String.Join(vbNewLine, strarray))
End Sub
输出是:
an|n9|2004/02/09|
a-n|o1|2004/02/12|
an|o2|2003/12/30|
这是错误的。“an”字符串不应位于其他两个“an”字符串之间。我还验证了无论第一个字母是什么都会发生这种情况......所以你可以用“b”或“t”而不是“a”替换每个字符串的第一个字母,它做同样的事情。但是,如果我从琴弦上剪掉一些末端,比如这个......
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim strarray() As String = New String() _
{"a-n|", _
"an|", _
"an|"}
Array.Sort(strarray)
Debug.Print(String.Join(vbNewLine, strarray))
End Sub
然后输出看起来更正确,它给出:
an|
an|
a-n|
有没有更可靠的方法对字符串数组进行排序?Array.Sort 中的这个错误/行为损坏了我的一个数据库。