Ho un oggetto che è il mio stato in memoria del programma e ho anche alcune altre funzioni di lavoro a cui passo l'oggetto per modificare lo stato. L'ho passato per riferimento alle funzioni di lavoro. Tuttavia mi sono imbattuto nella seguente funzione.
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);
Mi confonde perché entrambi received_s
e remoteEP
stanno restituendo cose dalla funzione. Perché ha remoteEP
bisogno di un ref
e received_s
non lo fa?
Sono anche un programmatore CA quindi ho problemi a togliermi i puntatori dalla testa.
Modifica: sembra che gli oggetti in C # siano puntatori all'oggetto nascosto. Quindi, quando si passa un oggetto a una funzione, è possibile modificare il contenuto dell'oggetto tramite il puntatore e l'unica cosa passata alla funzione è il puntatore all'oggetto in modo che l'oggetto stesso non venga copiato. Puoi usare ref o out se vuoi essere in grado di cambiare o creare un nuovo oggetto nella funzione che è come un doppio puntatore.