Tôi có một đối tượng là trạng thái bộ nhớ của chương trình và cũng có một số hàm worker khác mà tôi truyền đối tượng để sửa đổi trạng thái. Tôi đã chuyển nó bằng ref đến các hàm worker. Tuy nhiên tôi đã xem qua chức năng sau đây.
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);
Nó làm tôi bối rối vì cả hai received_s
và remoteEP
đang trả về nội dung từ hàm. Tại sao remoteEP
cần a ref
và received_s
không?
Tôi cũng là lập trình viên ac vì vậy tôi đang gặp vấn đề với việc lấy con trỏ ra khỏi đầu.
Chỉnh sửa: Có vẻ như các đối tượng trong C # là các con trỏ đến đối tượng bên dưới. Vì vậy, khi bạn truyền một đối tượng cho một hàm thì bạn có thể sửa đổi nội dung đối tượng thông qua con trỏ và thứ duy nhất được truyền cho hàm là con trỏ tới đối tượng để bản thân đối tượng không bị sao chép. Bạn sử dụng ref hoặc out nếu bạn muốn có thể chuyển đổi hoặc tạo một đối tượng mới trong hàm giống như một con trỏ kép.