kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 imak
imak
Вопрос

Имя типа или пространства имен 'T' найти не удалось

У меня есть следующий код, который я компилирую в проекте .NET 4.0

namespace ConsoleApplication1  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  

        }  
    }  

    public static class Utility  
    {  
        public static IEnumerable<T> Filter1(this IEnumerable<T> input, Func<T, bool> predicate)  
        {  
            foreach (var item in input)  
            {  
                if (predicate(item))  
                {  
                    yield return item;  
                }  
            }  
        }  
    }  
}  

но получаю следующие ошибки. У меня System.dll уже включена в ссылки по умолчанию. Что я могу делать неправильно?

Error   1   The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?) 

Error   2   The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?) 

Error   3   The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?) 
41 2012-06-21T17:53:56+00:00 5
Программирование
c#
generics
Paul Phillips
Paul Phillips
21-го июня 2012 в 5:55
2012-06-21T17:55:33+00:00
Дополнительно
Источник
Редактировать
#16497865

Вы должны поместить аргумент типа в саму функцию.

public static IEnumerable<T> Filter1<T>(...)
55
0
Хотите что-то узнать? Задавайте Ваш вопрос на нашем сайте
ru.kzen.dev
Решение / Ответ
 SwDevMan81
SwDevMan81
21-го июня 2012 в 5:55
2012-06-21T17:55:41+00:00
Дополнительно
Источник
Редактировать
#16497868
public static class Utility 
{  
    public static IEnumerable<T> Filter1<T>( // Type argument on the function
       this IEnumerable<T> input, Func<T, bool> predicate)  
    {  

Если вы не волнует, если его метод расширения или нет, вы можете добавить общий только класс. Я думаю, что вы хотите, чтобы метод расширения.

public static class Utility<T> // Type argument on class
{  
    public static IEnumerable<T> Filter1( // No longer an extension method
       IEnumerable<T> input, Func<T, bool> predicate)  
    {  
 SwDevMan81
SwDevMan81
Редактировал ответ 21-го июня 2012 в 6:11
41
0
Хотите что-то узнать? Задавайте Ваш вопрос на нашем сайте
ru.kzen.dev
 spender
spender
21-го июня 2012 в 5:55
2012-06-21T17:55:35+00:00
Дополнительно
Источник
Редактировать
#16497866

Вам нужно объявить T, которое встречается после имени метода или имени класса. Измените объявление метода на:

public static IEnumerable<T> 
    Filter1<T>(this IEnumerable<T> input, Func<T, bool> predicate) 
 spender
spender
Редактировал ответ 22-го июня 2017 в 11:07
15
0
 MCSI
MCSI
21-го июня 2012 в 5:55
2012-06-21T17:55:39+00:00
Дополнительно
Источник
Редактировать
#16497867
< T > означает тип объекта
IEnumerable<yourObject>

Здесь вы найдете больше информации: http://msdn.microsoft.com/en-us/library/9eekhta0.aspx

1
0
Хотите что-то узнать? Задавайте Ваш вопрос на нашем сайте
ru.kzen.dev
 Andrew
Andrew
17-го мая 2019 в 2:26
2019-05-17T14:26:28+00:00
Дополнительно
Источник
Редактировать
#16497869

У меня была такая же ошибка, но решения требует немного по-другому. Мне нужно, чтобы изменить это:

public static void AllItemsSatisy(this CollectionAssert collectionAssert, ICollection<T> collection, Predicate<T> predicate) 
{ ... }

К этому:

public static void AllItemsSatisy<T>(this CollectionAssert collectionAssert, ICollection<T> collection, Predicate<T> predicate) 
{ ... }
1
0
Похожие сообщества 6
Microsoft Stack Jobs
Microsoft Stack Jobs
2 400 пользователей
Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks
Открыть telegram
С#
С#
2 329 пользователей
Стараемся не флудить. Пишем по делу. Правила: https://t.me/professorweb/430450 Для флуда @svoboda_obsh
Открыть telegram
CODE BLOG / C#
CODE BLOG / C#
1 765 пользователей
Чат для .NET разработчиков и C# программистов. По всем вопросам: @shwanoff Youtube-канал: https://youtube.com/codeblog Основной канал: @codeblog Вконтакте: https://vk.com/codeblog Правила: https://t.me/codeblog_csharp/246972 Вакансии по тегу #work
Открыть telegram
var chat = new Chat();
var chat = new Chat();
1 626 пользователей
Обсуждение .NET / C# / F# Обсуждение Azure — @azurechat Прочие обсуждения – https://t.me/+zwxI91RGG6s2YzAy
Открыть telegram
C#/.NET Для Новичков
C#/.NET Для Новичков
294 пользователей
Группа создана для тех, кто изучает язык программирования C#. Верховный главнокомандующий: @BlackDeveloper Оффтоп - разрешен в меру, реклама - бан.
Открыть telegram
ext
ext
64 пользователей
Общение на темы YouTube канала и программирования. Вакансии не размещаем. Основной канал: @extremecode
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Александр Македонский
Зарегистрирован 6 дней назад
2
Andrei Kalinin
Зарегистрирован 3 недели назад
3
Koroleva Ego
Зарегистрирован 1 месяц назад
4
Star Lenon
Зарегистрирован 1 месяц назад
5
Данил Жевнеров
Зарегистрирован 2 месяца назад
Хотите что-то узнать? Задавайте Ваш вопрос на нашем сайте
ru.kzen.dev
ID
JA
KO
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией