Сниффер Bugtraq Файлы Статьи Новости
 
Форум [ ssl ]   Друзья   О Клубе          
Вернуться   HACKER-PRO CLUB / Кодинг / C/C++, C#, Ассемблер
Ответ
 
Опции темы Оценить тему Опции просмотра
Старый 02.07.2008, 15:51   #1
FANGarh
Форумчанин
 
Аватар для FANGarh
 
Адрес: Cyberspace
Сообщений: 69
Поблагодарили 3 раз(а) в 3 сообщениях
Репутация: 35/3
Найти FANGarh на icq.com
По умолчанию C# Extensions

Зачастую сталкивался с такими ситуациями, что при проектирование очередного приложения добавление необходимых мне методов в него перегружает объект(в смысле приходится наделять его свойствами которые с одной стороны могут принадлежать ему, а с другой они в нем избыточны, но в некоторых не частых ситуациях полезны). С одной стороны можно создать еще класс, который будет делать с объектами, упомянутого мной выше класса, необходимые мне вещи, но опятьже это перегружение проекта. Или же необходимо наделить какой-то класс свойствами которые не были предусмотренны разработчиками данного класса(предполагается что у вас нет возможности посмотреть его исходник). Для выхода из подобных ситуаций в .NET 3 и выше были добавленны так называемые расширения.

Расширение - возможность добавить к классу свойства в некотором контексте. Допустим мне надо проверить четность инт числа в нескольких различных местах.
1 выход:

...
int i = 8;
...

if(i % 2 == 0) ...

...

2 выход: Расширить класс int добавив в него метод IsEven
Для этого необходимо создать класс с рассширениями и внести расширение для int.

...
public static class Extensions
{
public static bool IsEven(this int val)
{
return val%2==0;
}
}
...

после введения данного расширениях, в местах где виден класс Extensions, можно написать следующим образом

...
int i = 8;
...
if(i.IsEven())
{
//Do some thing
}
...

Рассмотренный пример расширения может и не так необходим, но зато ярко демонстрирует суть ситуации.
FANGarh вне форума   Ответить с цитированием
Наши Спонсоры
Старый 15.03.2010, 09:54   #2
TRIPS
Форумчанин
 
Аватар для TRIPS
 
Сообщений: 43
Поблагодарили 3 раз(а) в 3 сообщениях
Репутация: 11/0
По умолчанию Re: C# Extensions

познавательно. спасибо. жму +
TRIPS вне форума   Ответить с цитированием
Ответ

Метки
нет

Опции темы
Опции просмотра Оценка этой теме
Оценка этой теме:

Ваши права в разделе
Вы не можете создавать новые темы
Вы можете отвечать в темах
Вы не можете прикреплять вложения
Вы можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +3, время: 12:07.
Powered by vBulletin® 3.x.x Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.

службы мониторинга серверов

Copyright © 2008 - 2010 «HACKER-PRO CLUB» Реклама на сайте Правила Форума Пользовательское соглашение
При копировании материалов ставьте ссылку на источник
Все материалы представлены только в ознакомительных целях, администрация за их использование ответственности не несет.