109: (Default)
109 ([personal profile] 109) wrote2003-01-12 08:40 pm

изучая C#

The ref method parameter keyword on a method parameter causes a method to refer to the same variable that was passed into the method. Any changes made to the parameter in the method will be reflected in that variable when control passes back to the calling method.

ну, предположим.

An overload will occur if declarations of two methods differ only in their use of ref.

какой, нах, overload? как компилятор поймёт, какой метод вызывается?

A property is not a variable and cannot be passed as a ref parameter.

ур-роды. меня ещё в Дельфи это достало, и тут то же самое. так трудно временный объект на стеке сделать?

[identity profile] duginov.livejournal.com 2003-01-12 05:54 pm (UTC)(link)
Да не, всё вроде логично... Очень надо - передавай field, а не property

[identity profile] 109.livejournal.com 2003-01-12 07:15 pm (UTC)(link)
если очень надо, то можно и на ассемблере написать. о том и речь, что сделали неудобно. зачем - непонятно. какая именно логика заставляет накладывать ненужные ограничения? не мог бы ты мотивировать?

[identity profile] duginov.livejournal.com 2003-01-12 10:23 pm (UTC)(link)
Мог бы. Property ведь - вообще не переменная, а кусок кода, ни с какими переменными в общем виде не связанный. И кстати Set-аксессора у property может и не быть. И что-как именно прикажешь передавать обратно в вызывающий метод?

Re:

[identity profile] 109.livejournal.com 2003-01-13 06:55 am (UTC)(link)
Property ведь - вообще не переменная, а кусок кода, ни с какими переменными в общем виде не связанный.

спасибо за разъяснение :-)
я же написал там - делать временный объект на стеке.

И кстати Set-аксессора у property может и не быть. И что-как именно прикажешь передавать обратно в вызывающий метод?

если set-аксессора нет, то проперть read-only и как ref её, разумеется, передавать нельзя. точно так же как и любое константное выражение. так что - "неубедительно, дорогой профессор" (с)

[identity profile] voidhawk.livejournal.com 2003-01-15 12:28 pm (UTC)(link)
Overload сработает, ref надо и в декларации, и в вызове писать.