아래에는 sample1을 살펴 보시기 바랍니다 :인스턴스 변수와 지역 변수의 혼란
Public Class LocalVariable
Public Sub Run()
Dim TestVariable As Integer
TestVariable = Method1(TestVariable)
TestVariable = Method2(TestVariable)
TestVariable = Method3(TestVariable)
End Sub
Private Function Method1(ByVal x As Integer) As Integer
Return x + 1
End Function
Private Function Method2(ByVal x As Integer) As Integer
Return x + 2
End Function
Private Function Method3(ByVal x As Integer) As Integer
Return x + 3
End Function
End Class
아래 예제 2 :
Public Class InstanceVariable
Dim TestVariable As Integer
Public Sub Run()
Method1()
Method2()
Method3()
End Sub
Private Sub Method1()
TestVariable = TestVariable + 1
End Sub
Private Sub Method2()
TestVariable = TestVariable + 2
End Sub
Private Sub Method3()
TestVariable = TestVariable + 3
End Sub
End Class
각 프로그램이 실행 된 후 결과가 분명 동일 즉 TestVariable = 6 . 내가 온라인에서 찾고 직장에서 사용하는 모든 예제는 샘플 1을 사용합니다. 확실히 이것은 TestVariable이 여러 함수에서 공유되어야하므로 인스턴스 변수의 오용입니다. 따라서 인스턴스 변수를 사용해야합니다.
샘플 1에는 지역 변수가 있습니다. 특정 기능에 국한되어 있습니다. 샘플 2에는 유형의 특정 인스턴스에 범위가 있기 때문에 인스턴스 변수가 있습니다. 나는 아마 당신의 용어가 거꾸로 생각합니다. 샘플 1의 어떤 시점에서도 TestVariable은 "기능을 넘어서 공유"되었습니다. 값 유형으로 각 함수 호출마다 사본이 작성됩니다. ByRef가 전달 된 경우에도 구조화 된 프로그래밍 규칙으로 인해 한 번에 하나의 메서드에만 적용됩니다. 다음에 호출되기 전에 반환됩니다. –
@ Joe Coehoorn, 감사합니다. 나는 더 명확하게하려고 질문을 편집했다. 그것은 의미가 있습니까? – w0051977
for 루프를 제거하십시오. 그들은 당신이하고있는 것을 혼란스럽게 만들고 결과가 두 샘플 모두에서 명백히 틀릴 것이라는 추측을하게됩니다. 주된 방법으로 Method의 1-3을 한 번만 호출하십시오. 또한 떠돌아 다니는 것은 떠돌아 다니는 것입니다. 궁금하려면 뭔가 궁금해하는 것입니다. –