プログラムのメモリ内状態であるオブジェクトがあり、状態を変更するためにオブジェクトを渡す他のいくつかのワーカー関数もあります。私はそれをワーカー関数に参照渡ししています。しかし、私は次の機能に出くわしました。
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を使用します。