Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 29.03.2014, 17:30   #1
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
По умолчанию Зачем пишут this перед типом в параметрах метода?

Это кусок кода в котором я обнаружил такое.
Цитата:
private static Bitmap ConvolutionFilter(this Bitmap sourceBitmap,
double[,] filterMatrix,
double factor = 1,
int bias = 0)
что это дает? почему не просто Bitmap или ref , out
IT-Lopata вне форума
Старый 29.03.2014, 17:54   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Можно и без this, но в этом случае, у вас будут выделены в памяти произвольные участки. При современном быстродействии процессоров, это не очень заметно, но это рудинемент от использования ДОС. Такая констукция отводит нефрагментированный кусок ОЗУ. В некоторых случаях, позволяет увеличить быстродействие при выводе.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума
Старый 29.03.2014, 18:10   #3
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Smitt&Wesson, вы не правы. Слово this в C# перед параметром допускается в статическом классе и обозначает метод расширения (extension method). Это фактически добавляет существующему типу новый метод, в данном случае Bitmap. То есть вместо
Код:
<что-то там>.ConvolutionFilter(bmp, ...)
можно написать просто
Код:
bmp.ConvolutionFilter(...)
Удобно добавлять так дополнительный функционал для удобства (как сделано в LINQ например). Правда тут я не вполне понимаю, почему метод сделан приватным, ведь толку в одном единственном классе от такой штуки будет мало.
Изобретатель велосипедов
Selestis вне форума
Старый 29.03.2014, 18:18   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Если класс не статический, ключевое слово также this ссылается на текущий экземпляр класса.
Подробнее здесь: this (Справочник по C#)
Streletz вне форума
Старый 29.03.2014, 18:30   #5
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Selestis: вы правы )
Smitt&Wesson: эка куда вас занесло) тут только синтаксический сахар, и ничего другого
Streletz: это да, но к теме топика вообще не относится
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума
Старый 29.03.2014, 19:38   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Х-м. Десять лет писал и в асме и в С, но, молодёжки говорят, что это жо**
Ну-ну. Флаг в руки и пончик то-же.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 29.03.2014 в 19:40.
Smitt&Wesson вне форума
Старый 29.03.2014, 20:05   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

при чем тут асм си и попа? вопрос про си-шарп
eval вне форума
Старый 29.03.2014, 20:11   #8
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Зачем пишут this перед типом в параметрах метода?

Цитата:
Можно и без this, но в этом случае, у вас будут выделены в памяти произвольные участки. При современном быстродействии процессоров, это не очень заметно, но это рудинемент от использования ДОС. Такая констукция отводит нефрагментированный кусок ОЗУ. В некоторых случаях, позволяет увеличить быстродействие при выводе.

Rififi вне форума
Старый 29.03.2014, 20:20   #9
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Женщину, конечно, жалко, Но, я написал ещё и не такие вещи, до которых, Вам пукать и пукать.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 29.03.2014 в 20:22.
Smitt&Wesson вне форума
Старый 30.03.2014, 01:01   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Женщину, конечно, жалко, Но, я написал ещё и не такие вещи, до которых, Вам пукать и пукать.
хватит хвастать.
ошибся так ошибся, бывает.
зачем разводить то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация метода интерфейса ActiveX. Проблема с типом Variant. Juggernout Visual C++ 7 07.05.2015 04:02
В книгах пишут подробно (основу), но как и где используется не пишут. 1ds PHP 3 07.12.2012 12:38
Объекты в параметрах функций romantik2011 PHP 3 28.07.2011 21:07
О параметрах запуска и CreateProcess Человек_Борща Общие вопросы Delphi 2 01.06.2011 10:01