【问题标题】:Empty Quotes in Dim Statement / VBDim 语句中的空引号 / VB
【发布时间】:2022-08-18 16:59:59
【问题描述】:

我不明白空引号在 Dim 语句中的作用。

我已经接手了一个用 VB 编写的前端 .asp 文件。前约 200 行是 Dim 语句。在字符串、布尔值和整数中,像下面这两个这样的语句有几十个,我不明白它们的用途。

Dim gsSearchResultSelectRaw    : gsSearchResultSelectRaw = \"\"
Dim gsSearchResultSelect       : gsSearchResultSelect = \"\"
  • 分配一个空字符串?但它们可能是多余的。
  • 您提供的代码非常糟糕,因为它隐含地将 gsSearchResultSelectRaw 和 gsSeachResultSelect 定义为变体。在单独的语句中(这就是 \':\' 的含义,变体被分配了一个空字符串的值 (\"\")。没有分配,gsSearchResultSelectRaw 和 gsSeachResultSelect 的值将是未分配的状态一个变体,它是空的。
  • 此外,鉴于您所说的拥有一组 200 个暗淡 (wince),您可能希望为 VBA 安装免费且出色的 Rubberduck 插件并遵循代码检查的建议。我怀疑你会有很多。
  • @freeflow- 我猜这是 VBScript,而不是 VBA。
  • 它会将 Empty 的值分配给变量。这可能是一种在使用之前将变量设置为字符串的方法。有时您可以使用此行来“清除”一个变量,如果您希望它用 NOTHING 替换一个值。

标签: vbscript frontend asp-classic


【解决方案1】:
Dim gsSearchResultSelectRaw    : gsSearchResultSelectRaw = ""
  1. 为变体保留存储空间。
  2. : 与换行相同。
  3. 为变量分配一个空字符串。这通常不是必需的,因为声明的变量具有默认值0"",具体取决于它的使用方式。

    编辑

    这被称为巫毒编程.

    在 C 语言中为变量分配空间不是将内存归零。因此,C 程序员会自动添加第二条语句以将内存归零。这就是为什么编译器不会像程序员期望的那样将内存归零。

    BASIC 不同,为变量分配空间会自动将内存归零。

    因此,您有 200 条毫无意义的陈述。因此,您的程序会变慢。

    编辑 2

    为了显示

    Dim A
    Msgbox A
    Msgbox A * 1
    

    然后 0 将不打印任何内容。

    因为消息框需要一个字符串,而数学运算符需要一个整数。

    Let 强制0 = false = 双重规则下。

【讨论】:

  • 这是误导。未初始化的变量为空(isEmpty() = true),而该变量包含一个恰好为零长度的字符串。在某些情况下,这是一个很大的区别。
  • @GeertBellekens IsEmpty 被添加到 BASIC 以应对变体。空变量等于""0。请记住,一个空字符串是一个包含 0 的内存地址,一个数字指向一个包含 0 的内存地址。不同之处在于编译器的期望。在 VBS 中,这取决于参数在语句中应该是什么数据类型。看编辑2.我从 1974 年开始使用 BASIC 编程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
  • 2015-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多