我有一个对象,它在程序的内存状态中,并且还有一些其他工作函数,我将该对象传递给该函数以修改状态。我一直在通过ref传递给worker函数。但是我遇到了以下功能。
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。