ฉันมีวัตถุที่อยู่ในสถานะหน่วยความจำของโปรแกรมและยังมีฟังก์ชันอื่น ๆ ของผู้ปฏิบัติงานที่ฉันส่งผ่านวัตถุไปเพื่อแก้ไขสถานะ ฉันได้รับการส่งผ่านโดยอ้างถึงหน้าที่ของผู้ปฏิบัติงาน อย่างไรก็ตามฉันเจอฟังก์ชันต่อไปนี้
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 ถ้าคุณต้องการให้สามารถสลับออกหรือสร้างวัตถุใหม่ในฟังก์ชันซึ่งเปรียบเสมือนตัวชี้คู่