VB.NET non supporta i puntatori, che sappia io intptr viene usato solo quando bisogna interfacciarsi con alcune API del sistema. Non si tratta di una lacuna, l'obiettivo dei progettisti di VB.NET era proprio quello di mettere a disposizione degli strumenti alternativi per fare le stesse cose.
Il seguente codice dovrebbe spiegarti il tuo dubbio:
codice:
Public Class Nodo
Public Property X As Double
Public Property Y As Double
Public Overrides Function ToString() As String
Return "{" & X.ToString & ":" & Y.ToString & "}"
End Function
End Class
Public Class Linea
Public Property Nodo1 As Nodo
Public Property Nodo2 As Nodo
Public Overrides Function ToString() As String
Return Nodo1.ToString & "-" & Nodo2.ToString
End Function
End Class
Public Sub Test()
Dim n1, n2, n3 As New Nodo
Dim l1, l2 As New Linea
n1.X = 5 : n1.Y = 5
n2.X = 10 : n2.Y = 15
n3.X = 20 : n3.Y = 30
l1.Nodo1 = n1
l1.Nodo2 = n2
l2.Nodo1 = n2
l2.Nodo2 = n3
Console.WriteLine("l1 = " & l1.ToString)
Console.WriteLine("l2 = " & l2.ToString)
l1.Nodo2.X = 150
Console.WriteLine("l1 = " & l1.ToString)
Console.WriteLine("l2 = " & l2.ToString)
End Sub
Richiamando Test(), il risultato in console sarà:
codice:
l1 = {5:5}-{10:15}
l2 = {10:15}-{20:30}
l1 = {5:5}-{150:15}
l2 = {150:15}-{20:30}
Come vedi la modifica di una proprietà di un oggetto si riflette su tutti gli altri oggetti che ne fanno riferimento.