Tenho um objeto que é meu estado na memória do programa e também algumas outras funções de trabalho para as quais passo o objeto para modificar o estado. Tenho passado por ref para as funções de trabalhador. No entanto, me deparei com a seguinte função.
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);
Isso me confunde porque received_s
e remoteEP
estão retornando coisas da função. Por que remoteEP
precisa de um ref
e received_s
não precisa ?
Eu também sou um programador AC, então estou tendo problemas para tirar dicas da minha cabeça.
Edit: Parece que os objetos em C # são ponteiros para o objeto subjacente. Portanto, quando você passa um objeto para uma função, pode modificar o conteúdo do objeto por meio do ponteiro e a única coisa passada para a função é o ponteiro para o objeto, de forma que o próprio objeto não seja copiado. Use ref ou out se quiser ser capaz de alternar ou criar um novo objeto na função que é como um ponteiro duplo.