举个简单例子,可以看出left$比left快2%,对于复杂的情况差距还会更大 Private Sub Command1_Click() Dim i As Long Dim str As String Dim t As Variant t = Timer For i = 0 To 30000 str = str & Left(Combo1.List(i), 9) + vbCrLf Next Label1.Caption = "用时" & CStr(Timer - t) & "秒" RichTextBox1.Text = str End SubPrivate Sub Command2_Click() Dim i As Long Dim str As String Dim t As Variant t = Timer For i = 0 To 30000 str = str & Left$(Combo1.List(i), 9) + vbCrLf Next Label1.Caption = "用时" & CStr(Timer - t) & "秒" RichTextBox1.Text = str End SubPrivate Sub Form_Load() Dim i As Long Dim t As Variant t = Timer For i = 0 To 100 Combo1.AddItem CStr(i) & "abcdefghijk" Combo1.ListIndex = 0 Next End Sub
VB官方文档似乎很鼓励使用"无$"类字符串函数,比如:Left、LTrim或者UCase,而不是实现同样功能的Left$、LTrim$和UCase$函数。但是我们必须认识到:前者返回variant类型的数值,当用于字符串表达式中时,最终必须要转换为字符串(string)类型。因此,在严格要求时间的代码段中,我们应该使用后者,它们将快5-10%。
因为$只是VB5遗留下来的写法而已;为了兼容早期的版本,才保留下来的;现在标准的写法里面$越来越少了;怎么会快5-10%?那里统计的??
如果真的能快的话;为什么还会有不带$的出现?和不直接的把Left$做成Left函数??返回 Variant (String),其中包含字符串中从左边算起指定数量的字符。语法Left(string, length)Left 函数的语法有下面的命名参数:部分 说明
string 必要参数。字符串表达式其中最左边的那些字符将被返回。如果 string 包含 Null,将返回 Null。
length 必要参数;为 Variant (Long)。数值表达式,指出将返回多少个字符。如果为 0,返回零长度字符串 ("")。如果大于或等于 string 的字符数,则返回整个字符串。
返回 Variant的时候,只是当返回Null的时候,是为了兼容Null的;
---------------------------------------------------------------
不建议使用$,呵呵,也许是我少见多怪;
因为$只是VB5遗留下来的写法而已;为了兼容早期的版本,才保留下来的;现在标准的写法里面$越来越少了;怎么会快5-10%?那里统计的??
如果真的能快的话;为什么还会有不带$的出现?和不直接的把Left$做成Left函数??返回 Variant (String),其中包含字符串中从左边算起指定数量的字符。语法Left(string, length)Left 函数的语法有下面的命名参数:部分 说明
string 必要参数。字符串表达式其中最左边的那些字符将被返回。如果 string 包含 Null,将返回 Null。
length 必要参数;为 Variant (Long)。数值表达式,指出将返回多少个字符。如果为 0,返回零长度字符串 ("")。如果大于或等于 string 的字符数,则返回整个字符串。
返回 Variant的时候,只是当返回Null的时候,是为了兼容Null的;
---------------------------------------------------------------
不建议使用$,呵呵,也许是我少见多怪;
Private Sub Command1_Click()
Dim i As Long
Dim str As String
Dim t As Variant
t = Timer
For i = 0 To 30000
str = str & Left(Combo1.List(i), 9) + vbCrLf
Next
Label1.Caption = "用时" & CStr(Timer - t) & "秒"
RichTextBox1.Text = str
End SubPrivate Sub Command2_Click()
Dim i As Long
Dim str As String
Dim t As Variant
t = Timer
For i = 0 To 30000
str = str & Left$(Combo1.List(i), 9) + vbCrLf
Next
Label1.Caption = "用时" & CStr(Timer - t) & "秒"
RichTextBox1.Text = str
End SubPrivate Sub Form_Load()
Dim i As Long
Dim t As Variant
t = Timer
For i = 0 To 100
Combo1.AddItem CStr(i) & "abcdefghijk"
Combo1.ListIndex = 0
Next
End Sub
Left$是返回String由于String运算比Variant运算快
所以Left$比Left块
我的理论也是书上看来的,回去就X掉它
发这个贴子是告诉大家:Left$比Left块——已经是事实了;抱歉,希望没有误导大家