The Structure and Class Integration Crisis

This is not as major of a problem, but you should be aware of it. Notice the structures and classes below.
    Public Structure BipoleS
        Public Number As Integer
        Public Label As Char
        Public Sub New(ByVal L As Char, ByVal N As Integer)
            Me.Label = L
            Me.Number = N
        End Sub
    End Structure
    Public Class BipoleC
        Public Number As Integer
        Public Label As Char
        Public Sub New(ByVal L As Char, ByVal N As Integer)
            Me.Label = L
            Me.Number = N
        End Sub
    End Class
    Public Class Tripod
        Private bis As BipoleS
        Private bic As BipoleC
        Public Sub New(ByVal S As BipoleS, ByVal C As BipoleC)
            bis = S
            bic = C
        End Sub
        Public Property BipoleStructure() As BipoleS
            Get
                Return bis
            End Get
            Set(ByVal Value As BipoleS)
                bis = Value
            End Set
        End Property
        Public Property BipoleClass() As BipoleC
            Get
                Return bic
            End Get
            Set(ByVal Value As BipoleC)
                bic = Value
            End Set
        End Property
    End Class
The Tripod class contains one structure and one class, exposed through two Property statements. Declarations are as follows:
        Dim Borealis As BipoleC
        Dim Australis As BipoleS
        Dim Aurorae As Tripod
Illustrated below:

We'll initialize them as so:
        Borealis = New BipoleC("n"c, 4)  'Instantiate the class.
        Australis = New BipoleS("p"c, 8)  'Initialize the structure.

And then the Aurorae class.
        Aurorae = New Tripod(Australis, Borealis)
        'Set the tripod class to have the BipoleS and the BipoleC.

And then, we change the Australis and Borealis values.
        Borealis = Nothing
        Australis = New BipoleS("A"c, 0)
        'Now these values are different.

Now, the weird part: We can change the value of the Bipole class by way of the Tripod.
        Aurorae.BipoleClass.Number = 25
        Console.WriteLine(Aurorae.BipoleClass.Number)
        'This change is executed successfully.
        'Roughly equivalent to the following:
        Borealis = Aurorae.BipoleClass  'This is a property statement that returns a class reference.
        Borealis.Number = 25   'Set the 25 in the class referenced here.
And everything works as predicted: the value returned to the console is 25.

However, that same line does not work on the Bipole structure.
        Aurorae.BipoleStructure.Number = 52
        'Why won't this work?
We get a nice error message stating that Aurorae.BipoleStructure.Number is a value and cannot be assigned to. Mainly because what we are trying to do is get the Bipole structure, set its Number property, and then set the Bipole structure to the updated version. Of course, this particular call to the BipoleStructure member cannot be a set and a get. The equivalent would be like this:
        Australis = Aurorae.BipoleStructure  'Get.
        Australis.Number = 52   'Set the value in Australis.
        'This does not set the bipole structure inside of the Aurorae reference.
        'Because Australis is merely a copy of the version in Aurorae.

In order to complete this operation, we'd have to reassign Australis to the Aurorae.BipoleStructure.
        Aurorae.BipoleStructure = Australis  'Set.  Finally.
        'Now the operation is complete.
Now, this setting is complete.

Why does
        Aurorae.BipoleStructure.Number = 52
raise an error? Because it is equivalent to the two lines:
        Australis = Aurorae.BipoleStructure  'Get.
        Australis.Number = 52   'Set the value in Australis.
Which do not change the value of Aurorae.BipoleStructure. The error is VS.NET's way of telling you that this makes no sense.
Why does Aurorae.BipoleClass.Number = 25 work? Because Aurorae.BipoleClass is a reference to the New BipoleC("n"c, 4), the same reference as the one that was in Borealis. So, when we change the number to 25 here, the change is reflected instantly due to the 'class reference'.

Have fun with classes and structures!