何时使用ref以及何时在C#中不需要
我有一个对象,它在程序的内存状态中,并且还有一些其他工作函数,我将该对象传递给该函数以修改状态。我一直在通过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。