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