2009-10-14 5 views
2

메서드를 포함하는 클래스와 동일한 형식의 매개 변수를 받아들이는 메서드가있는 클래스를보고 있습니다.Vb.Net 범위 지정 질문 - 개인 필드

Public Class test 
    private _avalue as integer 
    Public Sub CopyFrom(ByVal from as test) 
    _avalue = from._avalue 
    End Sub 
End Class 

코드에서 사용하는 경우

a.CopyFrom(b) 

그것은 해당 인스턴스 "는"전달 된 인스턴스의 "B"의 개인 회원에 대한 가시성을 가지고 라인을

_avalue = from._avalue 

실행 나타납니다 한 개체 인스턴스에서 다른 인스턴스로 비공개 필드를 복사하는 동안 오류가 발생하지 않습니다.

의도적으로 설계된 사람이라면 누구에게 알리십니까? 개인 필드는 객체의 인스턴스에서만 액세스 할 수 있다는 인상을 받았습니다.

답변

2

private 범위는 하지 인스턴스에 관한 것이다. 네, 이것은 의도적으로 설계된 것입니다.

클래스 test은 자체의 개인 부분에 대한 지식이 있으므로 동일한 유형의 다른 인스턴스에서도 해당 부분을 사용할 수 있습니다.

+0

감사합니다. Fredrik에게 감사드립니다. – Andrew

2

복사 생성자와 비슷한 것을 작성하고 있습니다.
복사 방법/함수가 같은 클래스 안에 작성되었으므로 자체 클래스의 모든 인스턴스에 대한 개인 변수에 액세스 할 수 있습니다.

+0

copy ctor의 샘플 - http://en.csharp-online.net/Copy_Constructors –