У мене є об'єкт, який є моїм в пам'яті програми, а також я маю деякі інші робочі функції, які я передаю об'єкту для зміни стану. Я передаю це по службовим функціям. Однак я натрапив на наступну функцію.
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);
Це мене бентежить, тому що і те, received_s
і remoteEP
повертають речі з функції. Для чого remoteEP
потрібен ref
а received_s
чи ні?
Я також програміст змінного струму, тому у мене виникають проблеми з виведенням вказівників з голови.
Редагувати: Схоже, що об'єкти в C # є вказівниками на об'єкт під кришкою. Отже, коли ви передаєте об'єкт функції, ви можете змінювати вміст об'єкта через покажчик, і єдине, що передається функції, - це вказівник на об'єкт, тому сам об'єкт не копіюється. Ви використовуєте ref або out, якщо хочете мати можливість вимкнути або створити новий об'єкт у функції, яка є як подвійний вказівник.