Mam obiekt, który jest moim stanem pamięci programu, a także kilka innych funkcji roboczych, do których przekazuję obiekt, aby zmodyfikować stan. Przekazywałem to przez odwołanie do funkcji robotniczych. Jednak natrafiłem na następującą funkcję.
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);
To mnie dezorientuje, ponieważ oba received_s
i remoteEP
zwracają rzeczy z funkcji. Dlaczego remoteEP
potrzebujemy ref
i received_s
nie robi?
Jestem też programistą AC, więc mam problem z wyrzuceniem wskaźników z mojej głowy.
Edycja: wygląda na to, że obiekty w C # są wskaźnikami do obiektu pod maską. Więc kiedy przekazujesz obiekt do funkcji, możesz następnie zmodyfikować zawartość obiektu za pomocą wskaźnika, a jedyną rzeczą przekazaną do funkcji jest wskaźnik do obiektu, aby sam obiekt nie był kopiowany. Używasz ref lub out, jeśli chcesz mieć możliwość przełączania się lub tworzenia nowego obiektu w funkcji, który jest podobny do podwójnego wskaźnika.