是否有可能在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. C++中的多個構造函數
- 3. 有多少構造函數太多?
- 4. 與多個構造MEF構造函數的參數
- 5. 在Kotlin中有兩個不同構造函數的數據類構造函數
- 6. 在構造函數中有多個參數的異常
- 7. 是否有可能將構造函數放在另一個構造函數的構造函數中?
- 8. 沒有參數的構造函數或參數構造函數
- 9. 多個構造函數和if語句
- 10. 如何簡化多個構造函數?
- 11. VB.NET - 調用多個構造函數
- 12. 調用多個超類構造函數
- 13. 多個構造函數的JavaScript模式
- 14. 我與另一個構造函數調用構造函數有一個錯誤
- 15. f#中帶有屬性賦值的多個構造函數
- 16. 在紅寶石中有多個構造函數
- 17. 構造函數調用具有參數的構造函數
- 18. 構造函數中的調用基構造函數和其他構造函數
- 19. 使用Java管理具有多個參數的構造函數
- 20. VB6類是否具有析構函數?
- 21. 有一個子類的構造函數
- 22. 具有多個構造函數參數值或多個類的單個類?
- 23. 從另一個構造函數調用默認構造函數
- 24. 如何構造類的構造函數可能有多個參數或模板中沒有?
- 25. 在C中有零個或多個參數的泛型構造函數#
- 26. 函數構造函數和原型構造函數有什麼區別?
- 27. ActionScript-3不能有多個構造函數?
- 28. 注入具有多個構造函數的類
- 29. 帶有多個構造函數的Java到Scala
- 30. 如何在其他構造函數中調用構造函數?
+1。比我的答案好得多,就在這裏。 – David 2011-03-17 13:09:40