Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Alvin Seville
328 / 261 / 131
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
1

Почему типы-параметры нельзя вывести в данном случае?

24.12.2018, 17:58. Просмотров 942. Ответов 1

C#
1
2
3
4
5
6
static class S
{
    public static T2[] Select<T, T2>(T source, Func<T, T2> f) => new T2[0];
 
    public static void P() => Select(new int[0], new Func<int, int>(x => x));
}
Почему типы-параметры нельзя вывести в данном случае? На вход Select мы подаём массив целых чисел, то есть T уже можно определить. Также, мы подаём делегат с явным указанием двух типов-параметров. То есть мы фактически указываем что такое также и T2. Что не так в моей логике? И почему это работает без проблем:
C#
1
2
3
4
5
6
static class S
{
    public static T2[] Select<T, T2>(T source, Func<T2> f) => new T2[0];
 
    public static void P() => Select(new int[0], new Func<int>(() => 0));
}
?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2018, 17:58
Ответы с готовыми решениями:

Для "c_auth.ClientRequest" не определены параметры-типы и поэтому нельзя использовать аргументы-типы
Прошу помощи. Делаю проект, но вылазит ошибка, а именно , а именно указывает вот сюда...

Какие параметры принимают функции в данном случае?
подскажите плиз. какое значение примет функция. 1 или 0? собственно с каким значение i функция...

Почему нужен &nbsp; в данном случае?
Привет всем!Собственно такой вопрос:Почему в данном случае нужен &amp;nbsp; ? И у меня при написании...

Почему в данном случае срабатывает неявный конструктор
Почему в данном случае срабатывает неявный конструктор, хотя он и помечен explicit? Main.cpp: ...

1
621 / 185 / 77
Регистрация: 09.01.2018
Сообщений: 405
24.12.2018, 18:36 2
Лучший ответ Сообщение было отмечено Соколиный глаз как решение

Решение

Первое, что бросается в глаза. Типы не соответсвуют.
В качестве Т передается массив. А в Func вместо него указывается int.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2018, 18:36

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

[C]Почему bind в данном случае выдаёт ошибку Address already in use?
Пытаюсь разобраться с темой сокетов. Есть клиент и сервер,которые связываются через STREAM сокет....

Почему в данном случае ставится двойной нижний пробел __ в цикле for?
&gt;&gt;&gt; def fib(n): a = 0 b = 1 for __ in range(n): a = b + b return a &gt;&gt;&gt;

Почему в данном случае работа с заранее выделенной памятью медленнее чем с динамической?
Написал функцию которая на основе списка выделяет память и при каждом вызове возвращает указатель...

Почему в данном случае используется operator int, а не operator double?
Вот программа using System; class ThreeD { int x, y, z; // трехмерные координаты ...

Теория. Почему в данном случае copy() не работает после reserve(), но работает после resize()?
Есть такая функция: void Array::SetStartIndexes(sz3_Arr_t *array) { ...

Оправдана ли в данном случае рекурсия?
private TreeNode FindRoot(TreeNode Node) { if ((Node.Parent)==null) ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.