, Для правильных утверждений важно использовать правильную терминологию для обозначения понятий.
я есть объект, который находится в памяти программы, а также есть некоторые другие рабочие функции, которым я передаю объект для изменения состояния. Я передавал его по ссылкам на рабочие функции. Однако я наткнулся на следующую функцию.
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
не?
Я также программист на C, поэтому у меня проблемы с выводом указателей из головы.
Изменить: похоже, что объекты в C # являются указателями на объект под капотом. Поэтому, когда вы передаете объект в функцию, вы можете затем изменить содержимое объекта через указатель, и единственная вещь, переданная функции, - это указатель на объект, чтобы сам объект не копировался. Вы используете ref или out, если хотите иметь возможность отключить или создать новый объект в функции, который похож на двойной указатель.