2011-03-16 2 views
6

vb6에서 여러 생성자를 사용할 수 있습니까? 내가 요청하는 이유는 클래스를 초기화하는 것을 보았 기 때문입니다. 그러나 생성자에 0 개 이상의 매개 변수를 넣을 수 있는지 또는 class_initialize가 생성자이고 매개 변수의 수를 허용 할 수 있는지 여부는 알 수 없습니다. 그 혼란은 주로 C#에 익숙하기 때문에 vb6으로가는 것은 클래스에 관한 한 혼란 스럽습니다.VB6의 다중 생성자?

답변

11

Class_Initialize은 클래스의 인스턴스가 인스턴스화되는 즉시 항상 호출되는 이벤트입니다. C# 생성자와 비교할 수 없습니다.

예를 들어, Class_InitializePrivate으로 생성되지만 개인 생성자가있는 C# 클래스는 인스턴스화 할 수 없습니다.

많은 점을 없을 것입니다 당신이 PublicPrivate에서 VB6 Class_Initialize 이벤트를 변경할 수 있지만 : 이벤트가 어쨌든 인스턴스에서 호출되기 때문에, 당신은 왜 두 번째 명시 적으로 호출 할 것인가? (그렇다면 Class_Initialize 이벤트에서 호출되는 public 메서드를 사용하는 것이 좋습니다.)

VB5 이벤트에 매개 변수를 추가 할 수 없으며 Optional 이벤트도 매개 변수를 추가 할 수 없습니다. 그렇게하려고하면 컴파일 오류가 발생합니다.

당신이 할 수있는 최선의 필요에 따라 아마도 명시 적으로 호출해야하는 매개 변수를 사용하여, 자신의 Initialize 방법을 롤과 Initialize 방법이 될 때까지 클래스가 사용되지 않도록하기 위해 내부 플래그를 isInitialized 상태 변수를 가지고있다

호출됩니다. 또한 '공장'접근 방식을 고려하십시오 : PublicNotCreatable 및 공장에서 호출 한 Friend Initialize 메서드를 사용하는 클래스가 적절하게 초기화 된 호출자에게 제공됩니다.

+1

+1. 내 것보다 훨씬 더 나은 대답. – David

2

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 

편집 난 당신이있을 수 있습니다 생각하지만 당신도 함께 선택 및 일반 매개 변수를 사용할 수 있습니다
끝 부분에 선택 사항을 넣으십시오.

+0

+1 코드 샘플 포함. – David

+0

그러나 인수를 사용하여 * 생성자 *를 만들 수는 없으며 선택적 또는 필수입니다. – MarkJ

+0

@MarkJ - 아, 네 말이 맞아. 나는 이것을 깨닫지 못했다. VB6에서 클래스를 자주 사용하지 않았으므로이 문제를 결코 알지 못했습니다. 생성자는 일반적인 방법보다는 이벤트와 비슷하다고 [여기] (http://www.xtremevbtalk.com/showthread.php?t=313295)합니다. @Mark Noon : 아래 onedaywhen의 대답을 사용해야합니다. 커스텀'Initialize' 메쏘드에 옵션 매개 변수를 추가하는 방법에 대한 나의 답을 여기서 계속 유지할 것입니다. –