2017-03-03 14 views
2

https://msdn.microsoft.com/en-us/library/office/gg264387.aspxVBA에서 인터페이스를 구현할 때 인수가 RHS로 바뀐 이유는 무엇입니까? 내가 그렇게으로는 IInterface를 만들 경우 MDSN 그림과 같이 인수가 자동으로 RHS 명명 된 사용자 클래스의 인터페이스를 구현

예를 들어, :

Public Property Let Value1(strValue1 As String) 

End Property 

Public Property Let Value2(strValue2 As String) 

End Property 

그리고 그것을 구현 클래스가 보일 것이다 같은 :

Implements IInterface 

Private Property Let IInterface_Value1(RHS As String) 

End Property 

Private Property Let IInterface_Value2(RHS As String) 

End Property 

그것은 추상의 어떤 수준을 제공하고 쉽게 읽고 코드를 작성할 수 있도록하는 방식으로 귀하의 인수 이름을하는 것이 가장 좋습니다. 아래에 나와있는 것처럼 명령문을 구현 한 후에 클래스에서 원하는 모든 인수를 실제로 변경할 수 있습니다. 그러나 제 질문은 이것이 왜 발생합니까? RHS가 다른 언어의 남은 책인가요? 아니면 특별한 이유가 있습니까?

Implements IInterface 

Private Property Let IInterface_Value1(strValue1 As String) 

End Property 

Private Property Let IInterface_Value2(strValue2 As String) 

End Property 

위의 내용은 수동으로 변경하면 정상적으로 컴파일됩니다.

답변

2

rhs는 = 의 좌측 용 오른손 연산자 =의 측 lhs 약자. 왜이 이름이 이렇게입니까? 어쩌면 c++ 규칙에서 오는 것입니다.

Dim test As IInterface 
Set test = New ClassTest 
test.Value1 = "rhsVal" 

새로운 문자열 값 때문에 = 그에 rhs의 오른쪽에 실제로 : 속성으로이 코드를 고려해야합니다.

+0

설명 주셔서 감사합니다. 다른 언어로 보아도 꽤 비슷합니다. Microsoft가 실제 인터페이스에 지정된 인수를 왜 겹쳐 쓰고 왜 클래스에서 구현할 때이를 덮어 쓸 수 있는지 궁금합니다. –

+0

'RHS '속성 만 사용하도록 설정되어 있지만 실제로이 방법으로 생성 된 코드는 무엇입니까? 음, 모르겠다. 그것은 VBA 편집기에서 약간의 버그로 보인다? – dee