![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Bogdan1024 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 5 Всего: 13 |
Что значит this в данной записи?
-------------------- ![]() |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
Это т.н. extension methods, которые появились в C# 3.0. Такая запись определяет метод IsEmpty для объектов класса TextBox.
Соответственно, при вызове
txtBox примет значение t. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
vponomarov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 11.8.2007 Где: Киев Репутация: 4 Всего: 12 |
вот это жесть
![]() static методы уже вызываются для экземпляров класса смысл в таких методах безусловно есть, но выглядит диковато ![]() |
|||
|
||||
QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 14 Всего: 32 |
Не совсем. Просто в статический метод передается ссылка на объект. По сути, синтаксический сахар. -------------------- I don't need a reason being who I am... |
|||
|
||||
vponomarov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 11.8.2007 Где: Киев Репутация: 4 Всего: 12 |
QryStaL, не, я понял механизм
просто со стороны это выглядит дико (ну по крайней мере для меня) хотя вот подумал - да, прикольный механизм ![]() |
|||
|
||||
source777 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 4 Всего: 56 |
Не совсем так, точнее совсем не так. Эти методы-примеси объявляются в отдельном статическом классе, а код
заменяется компилятором на
И как уже правильно заметил QryStaL, это является отличны примером синтаксического сахара. -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||||
|
|||||||
Bogdan1024 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 5 Всего: 13 |
Мне не нравится такая фича :( Такие фичи только прибавляют сомнения в стиле "Какая суть этого метода - родной метод или экстеншн?". Такой изврат разве есть в других языках?
-------------------- ![]() |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
В динамических языках есть monkey patching, который позволяет примерно то же самое. В языках с мультиметодами (CLOS) вообще нет разделения на «родные» методы и расширения.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |