코드에서 객체를"복제 중 "입니다. 예를 들어 :VB.NET 1.1의 할당 = "연산자
objClone = objOriginal
내 질문은 :
- 은 VB.NET 1.1 할당 연산자가 objClone에 objOriginal의 멤버 별 회원 사본을 하는가 또는 objClone는 단순히 참고로 지적 않는다 objOriginal에 의해 참조되는 메모리에?
코드에서 객체를"복제 중 "입니다. 예를 들어 :VB.NET 1.1의 할당 = "연산자
objClone = objOriginal
내 질문은 :
유형이 참조 유형 (예 : 클래스) 인 경우 참조 사본입니다. 값 유형 (구조) 인 경우 구성원 복사로 멤버를 수행합니다. 당신이 objOriginal
가 무엇인지 유형에 따라 다릅니다 보여 코드를 어떻게됩니까
VB는 확실하지 않지만 C# 버전의 할당은 얕은 복사본 만 수행합니다. (편집 : 참조 유형의 경우)
:
objClone
이 objOriginal
objClone
는참고 비록 objOriginal
동일한 내용으로, 새로운 인스턴스 것 l 원래 개체와 동일한 인스턴스를 참조합니다 (얕은 복사본).
예 :이 경우
Public Class Test
Public Number As Integer
End Class
Dim objOriginal As New Test()
objOriginal.Number = 42
Dim objClone As Test
objClone = objOriginal
는 objClone
및 objOriginal
둘다 Test
의 동일한 인스턴스를 참조한다. 이 경우
Public Structure Test
Public Number As Integer
End Class
Dim objOriginal As New Test()
objOriginal.Number = 42
Dim objClone As Test
objClone = objOriginal
,
objClone
및
objOriginal
는
Number
분야에서 자신의
Integer
인스턴스
Test
, 각각의 서로 다른 인스턴스 될 것입니다. 이 경우
Public Class SomeValue
Public Number As Integer
End Class
Public Structure Test
Public Value As SomeValue
End Class
Dim objOriginal As New Test()
objOriginal.Value = New SomeValue()
objOriginal.Value.Number = 42
Dim objClone As Test
objClone = objOriginal
,
objClone
objOriginal
및 K는 두 개의 서로 다른 인스턴스 수 있지만 둘 가치 부재 통해
SomeValue
의 동일한 인스턴스를 참조한다.
와우! 그건 디버그에 지저분한 문제입니다. – Achilles
그게 내가 생각한거야. – Achilles
FYI - 이것은 VB.NET의 최신 버전과 C# 및 기타 .NET 언어에서 동일합니다. –