sábado, 2 de mayo de 2020
VB.Net: Entendiendo los punteros
Francisco
12:41
action
,
basic
,
basico
,
clases
,
class
,
franvarvil
,
función
,
informática
,
método
,
por: Francisco Vargas
,
programación
,
tecnologías de información
,
vb.net
,
visual
,
visual basic
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:
Ahora crearemos una función que cree dos objetos persona, uno masculino y uno femenino, de la siguiente forma.
Finalmente nuestra salida es:
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.
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 SubComo 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.
Suscribirse a:
Enviar comentarios
(
Atom
)
No hay comentarios :
Publicar un comentario