Noticias

* Completa este formulario para conocer los temas de tu interes, te tomará unos segundos.

* Contenido actualizado diariamente!!

* Nueva categoría JavaScript!, aprender javascript está en tus manos!

* Nueva categoría VB .Net!, aprender VB .NET fácilmente con franvarvil!

* Sigue a la página para seguir creciendo!!

sábado, 2 de mayo de 2020

VB.Net: Entendiendo los punteros

No hay comentarios :
Introducción

En muchas ocaciones tenemos dudas cuando trabajamos con punteros pero, hay un pista que nos ayudará a identificar rápidadmente si el valor se hace por referencia o por valor.
Todos los tipos primitivos (enteros, char, double, etc), son automáticamente por valor, mientras que los objetos complejos (objetos de clases) son por referencia.

Desarrollo

Para ejemplificar esto crearemos el enumerable Genero y la Clase persona:

    Public Enum Genero
        Femenino = 1
        Masculino = 0
    End Enum

    Public Class Person 
        Public Property Name As String
        Public Property LastName As String
    End Class

Ahora crearemos una función que cree dos objetos persona, uno masculino y uno femenino, de la siguiente forma.

    Sub Puntero()
        Dim persona1 = New Persona(Genero.Femenino)
        Dim persona2 = New Persona(Genero.Masculino)

        persona1.asignaEdad(persona1, 32)
        persona2 = persona1
        persona2.asignaEdad(persona2, 25)

        Console.WriteLine($"{persona1.Genero},{persona1.Edad},{persona2.Genero},{persona2.Edad}")

    End Sub

Como vemos se crea la persona1 y la persona2 con se les asigna espacios en memoria distintos. Luego se le asigna la edad de 32 a la persona1. Y tenemos la parte importante, igualamos la persona2 a la persona1, es decir ahora ambos objetos persona direccionan al mismo espacio en memoria, por lo que al cambiar la edad de la persona2 a 25, ambos, persona1 y persona2 al apuntar al mismo espacio en memoria se ven modificadados.

Finalmente nuestra salida es:

    Console.WriteLine($"{persona1.Genero},{persona1.Edad},{persona2.Genero},{persona2.Edad}")
    'Output: 1,25,1,25    


Conclusión

Siempre es importante ver el comportamiento de los objetos que utilicemos y controlarlos de la forma en que queremos para evitar posibles perdidas de integridad en la información de los objetos durante la ejecución de nuestra aplicación.

No hay comentarios :

Publicar un comentario