是否有可能在vb6中有多个构造函数?我问的原因是因为我看到类初始化,但我不知道我是否可以将0个或更多参数粘贴到构造函数中,或者如果class_initialize是构造函数并且它可以接受任意数量的参数。它的混淆主要是因为我对c#非常熟悉,对于类而言,vb6会混淆不清。VB6中有多个构造函数?
回答
Class_Initialize
是一个事件,只要实例化类的实例,就会一直被调用。这与C#构造函数没有什么可比性。
例如,请注意Class_Initialize
创建为Private
,而具有私有构造函数的C#类不能实例化。
虽然你可以改变从Private
到Public
VB6的Class_Initialize
事件不会有多大意义:因为该事件是在调用实例无论如何,你为什么要显式调用它第二次? (如果你没有,那将是最好有一个从Class_Initialize
事件调用的公共方法。)
不能添加参数VB6 Class_Initialize
事件,甚至没有Optional
的。试图这样做会导致编译错误。
你能做的最好的是推出自己的Initialize
方法,以如下参数要求,必须明确要求,或许并有一个内部标志isInitialized
状态变量,以确保直到Initialize
方法已经不使用类调用。还要考虑一种'工厂'方法:工厂调用PublicNotCreatable
和Friend Initialize
方法的类,并向适合初始化的调用者提供服务。
在VB6中,您可以指定方法参数为optional
。这意味着您在调用函数时不必指定它们。如果未指定,则在方法签名中给出默认值。
从here一个例子:
Private Sub Draw(Optional X As Single = 720, Optional Y As Single = 2880)
Cls
Circle (X, Y), 700
End Sub
这可以被称为之一:
Draw 'OR
Draw 100 'OR
Draw 200, 200
编辑
你甚至可以使用可选的和常规参数在一起,但我认为你可能有把可选的放在最后。
+1包含代码示例。 – David 2011-03-16 21:36:35
但是你不能创建一个带任何参数的*构造函数*,可选或强制。 – MarkJ 2011-03-17 11:57:01
@MarkJ - 啊,你说得对。我没有意识到这一点。我没有经常在VB6中使用类,所以从来没有遇到过这个问题。它说[这里](http://www.xtremevbtalk.com/showthread.php?t=313295)构造函数更像是一个事件而不是一个典型的方法。 @Marc Noon:你应该在下面使用onedaywhen的答案。我将在这里保留我的答案,以便参考如何将可选参数添加到自定义'Initialize'方法。 – 2011-03-17 14:33:16
- 1. 构造函数中的多个参数
- 2. 统一:构造函数注入与多个构造函数
- 3. 多构造函数
- 4. C++中的多个构造函数
- 5. 有多少构造函数太多?
- 6. 如何从多个私人构造函数中反映私人构造函数
- 7. 与多个构造MEF构造函数的参数
- 8. 在Kotlin中有两个不同构造函数的数据类构造函数
- 9. 是否有可能将构造函数放在另一个构造函数的构造函数中?
- 10. 在构造函数中有多个参数的异常
- 11. 带有一个参数的私有拷贝构造函数和构造函数
- 12. 在构造函数中调用另一个构造函数
- 13. 多态构造函数
- 14. 没有参数的构造函数或参数构造函数
- 15. MYSQL过程的多个构造函数
- 16. 多个构造函数的JavaScript模式
- 17. 多个可调用构造函数
- 18. 多个构造函数和if语句
- 19. 多个构造函数不会工作
- 20. VB.NET - 调用多个构造函数
- 21. 如何简化多个构造函数?
- 22. 调用多个超类构造函数
- 23. 我与另一个构造函数调用构造函数有一个错误
- 24. ArrayAdapter的构造函数中有多个TextView
- 25. 在红宝石中有多个构造函数
- 26. f#中带有属性赋值的多个构造函数
- 27. 构造函数调用具有参数的构造函数
- 28. 构造函数中的调用基构造函数和其他构造函数
- 29. 构造函数内的构造函数
- 30. VB6类是否具有析构函数?
+1。比我的答案好得多,就在这里。 – David 2011-03-17 13:09:40