新觀念的 VB5 教本

每週一問: 挑戰您的 VB 功力 (初級篇, 98/02/15)


Q: If S="" Then 與 If Len(S)=0 Then 何者速度較快?
Dim S As String

S = "ABCDEFGHIJ"
If S = "" Then ' 是否等於空字串
    ...
End If
Dim S As String

S = "ABCDEFGHIJ"
If Len(S) = 0 Then ' 利用長度來判斷空字串
    ...
End If
A: 結果是 If Len(S) = 0 Then 比較快,因為數值的運算速度要比字串快。

有經驗的 C 語言程式設計師可能會以為 If Len(S)=0 Then 比較慢, 因為對 C 語言而言, 計算長度的方法是判斷 Chr(0) 字元的所在位置, 字串的長度越長, 則計算長度的函數就會多花一點時間, 因此認為 Len(S) 會比較費時。

但是對 VB 而言, 字串的內部結構中除了包含字串本身之外, 還包含字串的長度, 而 Len(S) 不過是將字串結構中的「字串長度」部分取出來, 所以不像 C 語言一樣, 會額外費去計算的時間。