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