Tengo un objeto que está en mi estado de memoria del programa y también tengo algunas otras funciones de trabajo a las que paso el objeto para modificar el estado. Lo he estado pasando por referencia a las funciones de trabajador. Sin embargo, encontré la siguiente función.
byte[] received_s = new byte[2048];
IPEndPoint tmpIpEndPoint = new IPEndPoint(IPAddress.Any, UdpPort_msg);
EndPoint remoteEP = (tmpIpEndPoint);
int sz = soUdp_msg.ReceiveFrom(received_s, ref remoteEP);
Me confunde porque ambos received_s
y remoteEP
están devolviendo cosas de la función. ¿Por qué remoteEP
necesita un ref
y received_s
no?
También soy programador de corriente alterna, así que tengo problemas para sacarme los punteros de la cabeza.
Editar: Parece que los objetos en C # son punteros al objeto debajo del capó. Entonces, cuando pasa un objeto a una función, puede modificar el contenido del objeto a través del puntero y lo único que se pasa a la función es el puntero al objeto para que el objeto en sí no se esté copiando. Use ref o out si desea poder cambiar o crear un nuevo objeto en la función que es como un puntero doble.