Why does this implementation of move corresponding work? vb.net : Since three is read only and depends on a non property (four). Three should be undefined.
How does props, which does not set four, set three to the correct value?
--------------------------------------------------

public sub main
        Dim x1 = New one, x2 = New two
        x1.one = 3
        MoveCorresponding(x1, x2)
end sub

    Public Sub MoveCorresponding(a As Object, b As Object, Optional ignoreList As List(Of String) = Nothing)
        Dim oType As Type = b.GetType
        Dim iType = a.GetType
        Dim props = iType.GetProperties()
        For Each pInf As PropertyInfo In props
            Dim parName = pInf.Name
            If pInf.CanWrite Then
                Try
                    Dim val = pInf.GetValue(a, Nothing)
                    pInf.SetValue(b, val)
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try
            End If
        Next

    End Sub
End Class
Class one
    Public Property one As String = "1"
    Dim four As Integer = 1
    Public ReadOnly Property three As Integer
        Get
            Return four * 10
        End Get
    End Property

End Class