プログラムのメモリ内状態であるオブジェクトがあり、状態を変更するためにオブジェクトを渡す他のワーカー関数もいくつかあります。私はそれを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
必要がないのはなぜですか?ref
received_s
私はACプログラマーでもあるので、頭からポインターを取り出すのに問題があります。
編集: C# のオブジェクトは内部のオブジェクトへのポインターのようです。したがって、オブジェクトを関数に渡すと、ポインターを介してオブジェクトの内容を変更できます。関数に渡されるのはオブジェクトへのポインターだけであるため、オブジェクト自体はコピーされません。ダブルポインターのような関数で新しいオブジェクトを切り替えたり作成したりできるようにする場合は、ref または out を使用します。