Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Интерфейсы, Делегаты, Аттрибуты, прошу обьяснить... 
V
    Опции темы
W1zArD
Дата 8.7.2007, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 29.1.2006

Репутация: нет
Всего: 3



вобщем прошу вас помочь ясно донести мне что же это...
как бы вам сказать... ну не очень понимаю с учебников...
если можно сделать сопоставление с Delphi буду благодарен...
(не ругайте... мне даже стыдно... но "не понимание" берет свое)
PM   Вверх
tol05
Дата 8.7.2007, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 36
Всего: 170



во-первых, все это - типы данных.

Делегаты: Delegate class -> MultiсastDelegate class -> твой делегат
делегат - родственник указателя на метод. Класс делегата содержит ссылку на метод (который ты задаешь при создании делегата), информацию о классе, где этот метод хранится. Ты можешь создать объект делегата, передать его в функцию, как параметр (это же тоже класс), а в функции - вызвать делегат абсолютно так же, как ты вызываешь любой метод, например так 
myDelegate(10, "привет"? true); Если при создании делегата ты ему задал метод 
void F(int i, ctring s, bool b); то этот метод и вызовется вместо делегата. Это я показал тебе пример технологии "обратного вызова". 
Еще на основе построен принцип работы событий. Событие - это (очень грубо говоря) - это MultiсastDelegate (т.е. коллекция делегатов) Делегаты можно добавлять в список и удалять из него. Ну и плюс методы добавления/удаления делегатов

Интерфейс - это абстрактный тип. Может содержать все, как и класс, только в абстрактном виде (без реализации). Не содержит полей (переменных), операторов и приведений типов. А так - все остальное ты можешь в нем определять (еще раз повторяю - без реализации, реализацию должен обеспечить класс, наследник этого интерфейса).
Интерфейс - это что-то наподобие соглашения, которое подписывает разработчик класса. Когда ты говоришь, что твой класс реализует (наследует) интерфейс, то ты обязан реализовать реальным кодом все члены интерфейса, иначе компилятор не скомпилирует код. 
Это очень удобно. Я пишу один класс, где есть методы, например, принимающие только те объекты, которые реализуют интрефейс IEnumerator (к примеру). Если ты пишешь свой класс и говоришь, что ты реализуешь этот интерфейс, то ты можешь передавать объекты своего класса в мой метод. Я увижу, что твой класс - наследник IEnumerator и, не видя ни одной строчки твоего кода, могу смело вызывать члены этого интерфейса как члены твоего класса (ты же был обязан реализовать все члены IEnumerator, иначе бы не скомпилилось). smile

Атрибуты - пользовательский код, через который ты можешь давать директивы среде выполнения, как компилировать, выполнять этот код, как его показывать в графическом дизайнере студии и т.д. и т.п. Атрибуты записываются в метаданные сборки и могут в любой момент оттуда же и читаться. 
Одним слово, если нужно что-то сообщить (среде выполнения, пользователям кода, еще кому-либо) о классе, а служебных слов в языке программрования для этого нет - создается атрибут smile
Есть понятие рефлексии - это целые библиотеки, предназначенные для поиска в сборке определенного атрибута, чтения его значения. Атрибуты, при работе с ними в коде, тоже преобразуются в классы.


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0405 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.