Ciao
Questo avviene perchè le classi sono un tipo riferimento, e quando ad una variabile che ha per tipo una classe assegni un valore, quello che assegni in realtà è l'indirizzo in memoria del valore, pertanto ogni modifica che apporti alla variabile, si ripercuote sull'oggetto assegnato. (e in C# è unguale )
Quello che puoi fare è, nella classe A implementare l'interfaccia ICloneable per ottenere una copia della classe, oppure istanziare a ad un nuovo oggetto A e copiare al suo interno i valori B.A.a, B.A.b, B.A.c ecc... (che è la stessa cosa, ma devi riscrivere tutto ogni volta)
Class A
Implements ICloneable
Public a, b, c As Integer
Function Clone() As Object Implements ICloneable.Clone
Dim result As New A
result.a = a
result.b = b
result.c = c
Return result
End Function
End Class
Sub TuaSub()
Dim a As A = B.A.Clone()
For i As Integer = 0 To n
a.a += 1
a.b += 1
a.c += 1
Next
End Sub
-oppure-
Sub TuaSub()
Dim a As New A
a.a = B.A.a
a.b = B.A.b
a.c = B.A.c
For i As Integer = 0 To 10
a.a += 1
a.b += 1
a.c += 1
Next
End Sub
Luca