我有一个对象,它是程序的内存状态,还有一些其他工作函数,我将对象传递给它以修改状态。我一直通过 ref 将它传递给工作函数。但是我遇到了以下功能。
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
需要 aref
而不需要received_s
?
我也是一名交流程序员,所以我无法从脑海中获取指针。
编辑:看起来 C# 中的对象是指向引擎盖下对象的指针。因此,当您将对象传递给函数时,您可以通过指针修改对象内容,并且传递给函数的唯一内容是指向对象的指针,因此不会复制对象本身。如果您希望能够在函数中切换或创建一个新对象,就像双指针一样,您可以使用 ref 或 out 。