我来自Java和.NET背景。
在VB6中,您似乎并不总是在使用它时创建类的实例。例如,当使用Printer类时,您可以简单地说Printer.print而不必首先创建实例,即Dim printer As New Printer然后运行printer.Print。我知道打印机是VB6中的系统对象,但为什么不必创建实例?
答案 0 :(得分:5)
Visual Basic传统上有大量预定义的标识符,这些标识符可由编译器直接识别。 Printer对象就是其中之一。在引擎盖下,这是用[appobject] attribute实现的,但是在语言中小心隐藏了。运行时自动创建COM coclass的实例,非常类似于As New语法。 DAO DBEngine对象将是语言解析器中未预定义的对象的示例。
这已经完成了VB.NET,这是一种真正面向对象的语言,具有大型类库,就像Java一样。没有Printer对象,你应该使用PrintDocument类。遗留代码仍支持Printer对象,可在Microsoft.VisualBasic.PowerPacks.Printing.Compatibility.VB6命名空间中找到。但是,它需要 New 关键字来创建它的实例。
小心翼翼地在VB6中投入大量时间和精力,这在很多方面都是一种过时的语言。
答案 1 :(得分:0)
VB6不是一种面向对象的语言,就像你习惯使用新语言一样。 VB6将进行隐式实例化,您可以将某些事物视为静态事件。例如,您可以声明表单的变量,但您不必这样做。您可以直接调用表单并在不声明的情况下对其进行操作。对于打印机,它无法显式声明和实例化,但VB6已经有一个可用。