【问题标题】:What is the difference between VBScript's + and & operator?VBScript 的 + 和 & 运算符有什么区别?
【发布时间】:2010-11-15 14:02:47
【问题描述】:

在每个谈论 VBScript 的网站上,'&' 运算符都被列为字符串连接运算符。但是,在我最近继承的一些代码中,我看到使用了“+”运算符,因此我没有看到任何错误。这是公认的替代方案吗?

【问题讨论】:

    标签: string vbscript string-concatenation


    【解决方案1】:

    在某些情况下 + 会抛出异常;例如:

    Sub SimpleObject_FloatPropertyChanging(fvalue, cancel)
       'fvalue is a floating point number
       MsgBox "Received Event: " + fvalue
    End Sub
    

    当 COM 对象源触发事件时,您将收到异常 - 您必须执行以下任一操作:

    MsgBox "Received Event: " & fvalue
    

    MsgBox "Received Event: " + CStr(fvalue)
    

    在这两种情况下最好使用CStr(value);但使用 & per 以上 cmets 进行字符串连接几乎总是最佳实践。

    【讨论】:

      【解决方案2】:

      & 运算符执行字符串连接,即强制将操作数转换为字符串(例如先调用CStr)。如果表达式之一是数字,+ 反过来会强制加法。例如:

      1 & 2
      

      给你12,而

      1 + 2
      "1" + 2
      1 + "2"
      

      给你3

      因此,建议使用& 进行字符串连接,因为它可以消除歧义。

      【讨论】:

      • +1 用于指定字符串编号 + 编号。接受的答案没有提到将数字字符串转换为数字的 vbscript。
      【解决方案3】:

      + 运算符是重载的,而 & 运算符不是。 & 运算符只进行字符串连接。在某些圈子中,& 运算符被用作最佳实践,因为它是明确的,因此不会因重载而产生任何意外影响。

      【讨论】:

      • The + operator is overloaded -- 超载在什么意义上?
      • @wolf 在 VB 中 + 运算符可以根据上下文进行加法和连接。
      • 好吧,我已经读过了。我发现overloaded这个词本身就是我希望的重载,在这一点上答案可能会更准确一些。
      【解决方案4】:

      + 运算符在字符串可以被解释为数字时可能会适得其反。如果您不希望出现令人讨厌的意外,请使用 & 来连接字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-10
        • 2018-08-16
        • 2012-10-10
        • 1970-01-01
        • 2010-11-25
        • 2011-04-21
        • 2011-02-12
        • 2021-04-19
        相关资源
        最近更新 更多