Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
1

Объекту типа делегата не присваивается адрес функции

18.10.2012, 18:33. Показов 790. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
почему объекту типа делегата:
C#
1
string del(object obj);
не присваивается адрес функции string f(double)? Object ведь любой тип схавать может...

Добавлено через 12 минут
хочу сделать обобщенный делегат без обобщений. Слышал, что можно сделать это, объявив делегат след. образом:

C#
1
public delegate void delll(object obj);
Но он почему то вообще никакие функции не принимает, с такой же сигнатурой.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2012, 18:33
Ответы с готовыми решениями:

Периодически не присваивается ip адрес
Доброго времени суток. Подскажите пожалуйста, может кто сталкивался. Проблема следующая,...

На github не присваивается адрес сайта
Подскажите пожалуйста, возникла проблема захожу на github создаю учетную запись репозиторий,...

Можно ли присвоить объекту основного типа значение объекта пользовательского типа?
Правильно ли я понимаю, что SomeClass obj; int x = obj; или SomeClass obj; int x = 5 +...

Динамическая правка входного типа делегата в Expression
Есть вот такой костыль от которого не уйти public static int Delete<T,U>(DbSet<T> f,...

3
28 / 28 / 5
Регистрация: 07.09.2012
Сообщений: 119
18.10.2012, 20:47 2
насколько я помню, ответ на этот вопрос можно найти в разделе ковариантность и контрвариантность.
В данном случае задействована контрвариантность:
Делегату может быть присвоен метод, типом параметра которого может быть класс, являющийся базовым для класса, указываемого при объявлении делегата. Проще говоря, все работало бы, если бы было примерно так:
делегат:
C#
1
string del(double obj);
метод:
C#
1
string f(object obj)
1
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
19.10.2012, 01:18 3
Нужно чтобы вызов делегата был корректным, т.е. не падало при несовпадении аргументов.
Код который будет вызывать делегат, думает (по сигнатуре делегата), что делегат принимает параметр object. Пытается вызвать делегат, с параметром, например new object(). А что метод f будет делать с параметром object? Правильно - ничего хорошего. Поэтому для параметров делегатов ковариация запрещена.
0
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 183
19.10.2012, 19:28  [ТС] 4
Спасибо)
0
19.10.2012, 19:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.10.2012, 19:28
Помогаю со студенческими работами здесь

Изменение типа параметров в объявлении делегата Func
У меня есть метод, который сортирует присылаемый список по определенному параметру. К примеру,...

Ошибка при вызове события типа некоторого делегата
class E { public static event EventHandler StartEvent; public event EventHandler...

Разница лямбда выражения, делегата (\анонимного делегата), методом (\анонимных методов)
Всё просто: В чём отличия: лямбд, делегатов, анонимных делегатов, методов, анонимных методов? ...

Передача функции, делегата другой функции с параметрами
Здравствуйте, Подскажите пожалуйста, есть ли возможность вызвать функцию класса, указав в...

Ошибка C3374 невозможно получить адрес "void function()" пока не будет создан экземпляр делегата
C++/CLR. Работаю с CURL. Пытаюсь вызвать данную функцию: static size_t write_data(char *ptr,...

Присвоение объекту типа string рандомный элемент из массива типа string
Добрый вечер, дорогие форумчане. Я столкнулся с проблемой. Как присвоить объекту типа string...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru