left:可以指一个对象的左边位置
left$:返回一个字符串的左边一定数量的字符在返回左边一定数量字符的用法上我发现它们是一样的

解决方案 »

  1.   

    使用"$-类型"字符串函数会更快 
    VB官方文档似乎很鼓励使用"无$"类字符串函数,比如:Left、LTrim或者UCase,而不是实现同样功能的Left$、LTrim$和UCase$函数。但是我们必须认识到:前者返回variant类型的数值,当用于字符串表达式中时,最终必须要转换为字符串(string)类型。因此,在严格要求时间的代码段中,我们应该使用后者,它们将快5-10%。
      

  2.   

    实际上VB在字符处理上本身就慢,而$并不是加快的方法;
    因为$只是VB5遗留下来的写法而已;为了兼容早期的版本,才保留下来的;现在标准的写法里面$越来越少了;怎么会快5-10%?那里统计的??
    如果真的能快的话;为什么还会有不带$的出现?和不直接的把Left$做成Left函数??返回 Variant (String),其中包含字符串中从左边算起指定数量的字符。语法Left(string, length)Left 函数的语法有下面的命名参数:部分 说明 
    string 必要参数。字符串表达式其中最左边的那些字符将被返回。如果 string 包含 Null,将返回 Null。 
    length 必要参数;为 Variant (Long)。数值表达式,指出将返回多少个字符。如果为 0,返回零长度字符串 ("")。如果大于或等于 string 的字符数,则返回整个字符串。 
    返回 Variant的时候,只是当返回Null的时候,是为了兼容Null的;
    ---------------------------------------------------------------
    不建议使用$,呵呵,也许是我少见多怪;
      

  3.   

    实际上VB在字符处理上本身就慢,而$并不是加快的方法;
    因为$只是VB5遗留下来的写法而已;为了兼容早期的版本,才保留下来的;现在标准的写法里面$越来越少了;怎么会快5-10%?那里统计的??
    如果真的能快的话;为什么还会有不带$的出现?和不直接的把Left$做成Left函数??返回 Variant (String),其中包含字符串中从左边算起指定数量的字符。语法Left(string, length)Left 函数的语法有下面的命名参数:部分 说明 
    string 必要参数。字符串表达式其中最左边的那些字符将被返回。如果 string 包含 Null,将返回 Null。 
    length 必要参数;为 Variant (Long)。数值表达式,指出将返回多少个字符。如果为 0,返回零长度字符串 ("")。如果大于或等于 string 的字符数,则返回整个字符串。 
    返回 Variant的时候,只是当返回Null的时候,是为了兼容Null的;
    ---------------------------------------------------------------
    不建议使用$,呵呵,也许是我少见多怪;
      

  4.   

    举个简单例子,可以看出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
      

  5.   

    Left是返回Variant
    Left$是返回String由于String运算比Variant运算快
    所以Left$比Left块
      

  6.   

    测试了,我认输了;
    我的理论也是书上看来的,回去就X掉它
    发这个贴子是告诉大家:Left$比Left块——已经是事实了;抱歉,希望没有误导大家