今日 IsNumeric でいくつかのベンチマークを行い、次の関数と比較しました。
Private Function IsNumeric(ByVal str As String) As Boolean
If String.IsNullOrEmpty(Str) Then Return False
Dim c As Char
For i As Integer = 0 To Str.Length - 1
c = Str(i)
If Not Char.IsNumber(c) Then Return False
Next
Return True
End Function
この結果にはかなり驚きました。数値の場合、これは通常の IsNumeric() よりも約 8 ~ 10 倍高速であり、空の値または非数値の場合は 1000 ~ 1500 倍高速でした。
IsNumeric にそんなに時間がかかっているのは何ですか? 上記の関数に置き換える前に、内部で考慮すべきことが他にありますか? サイト全体の約 50 か所で IsNumeric を使用していますが、主にフォームとクエリ文字列の検証に使用しています。