代码之家  ›  专栏  ›  技术社区  ›  Daniel

了解Visual Basic中的变量

  •  0
  • Daniel  · 技术社区  · 17 年前

    如果我不声明变量的类型,主要的问题是什么?像, Dim var1 对战 Dim var1 as Integer .

    5 回复  |  直到 14 年前
        1
  •  7
  •   Tyler McHenry    17 年前

    使用允许使用变量类型的语言声明变量类型的主要原因是检查您自己。如果有一个变量用来保存一个字符串,然后意外地将它传递给一个需要整数的函数,那么编译器就无法判断 除非你告诉我你搞砸了 那个变量应该总是一个字符串。相反,你的字符串被重新解释为一个整数,这几乎永远不会给你想要的,结果很可能是混乱的,很难找到错误。

    在几乎所有的语言中,都有许多构造,您可以将其忽略掉,您的程序可以工作,但作为对程序员的检查而存在。编译器的第一项工作是将代码转换为可执行文件。但是编译器的第二项工作是尽可能地确保程序员没有犯错误。尤其是当你的程序变大时,让编译器发现这样的错误要比相信你输入的一切都是正确的容易得多。

    此外,通常有一些与变量相关的处理开销,但这是一个更为次要的问题。

        2
  •  3
  •   John Feminella    17 年前

    有几个原因:

    • 大大提高了类型安全性。
    • 降低认知开销;编译器和IntelliSense可以帮助您。
    • 降低性能开销;将事物转换为 Variant 类型有一个小但不平凡的成本。
    • 无需命名疣(例如, lblTitle 告诉你应该有东西拿着 Label )
    • 移动一些运行时错误来编译时间错误,这是一个巨大的生产力胜利。
        3
  •  1
  •   Joel Coehoorn    17 年前

    其他人已经提到了IntelliSense,但它值得重复。

    另外,当您为变量声明一个显式类型时,您可以让编译器对您的代码进行各种额外的类型检查和验证,否则是不可能的。发生的是现在某些非常常见的错误被捕获 固定 在编译时而不是运行时。用户从未见过它们。您不想在运行时留下错误。

    你说“可能是任何事”——这是真的。但你接着会说“所以一定很好”。这不一定会发生,而且非常危险。不是所有的东西都能被分配或与其他东西结合。它可以是任何东西-但它 一些东西,或者更确切地说是一些特定的东西。如果没有显式类型,编译器就无法知道什么,也无法帮助您避免错误。

        4
  •  0
  •   Welbog    17 年前

    从表面上看,如果不声明类型,IntelliSense就不能帮助您处理它,因为它不知道它是什么类型。

        5
  •  0
  •   Onorio Catenacci    17 年前

    与python的输入系统相比。python允许开发人员使用变量而不预先声明类型,但是一旦使用了变量,类型就固定了。相比之下,变量最初可以被分配任何类型的值,以后可以存储不同类型的值,而不需要任何警告或投诉。因此,您可以将一个字符串放入一个以前保存数字的变量中。

    Dim myvar1
    myvar1 = 1
    
    'A whole lot more code 
    
    myvar1 = "this string"
    

    如果您必须维护别人的代码,那么您将开始理解为什么这类事情(静默地更改变量类型)会变得非常难以维护。尤其是如果您使用的是模块级变量,这可能会导致一些非常有趣的问题。这与在VB代码中使用Option Explicit是相同的。如果没有明确的选项,您可以在不意识到它的情况下做这类事情:

    myvar1 = 1
    
    'A whole lot more code here too
    
    myvarl = 2
    

    在某些字体中,这两个变量名是不可能区分的,这可能导致一些难以发现的错误。