Список C#. Найдите метод - как я могу передать значение в предикат?

  1. Visual Studio Установки 2008 и Resharper с привязками клавиш ИДЕИ IntelliJ. Это дает Вам вещи как запрос Вас включать пространства имен, если Вы начинаете использовать их.
  2. Запускают новый проект и начинают писать код Java, когда Вы сталкиваетесь с чем-то, что не работает правильно, или это неспособно найти класс, Вы пытаетесь использовать Google "PrintLn in c#".
  3. Тесты записи или фрагменты кода для проверок работоспособности, как Вы могут хотеть проверить, работает ли == на строки (это делает)
  4. , понимают, что c# искажают Типы данных (интервал является псевдонимом для Системы. Int32, представьте в виде строки для Системы. Строка)
  5. смотрят на другой код народов, который я рекомендую , код Google JP Boodhoos
  6. Устраивается на работу в C#, существует много заданий, требующих и Java и C# особенно в поддержке.
  7. Знают Ваши библиотеки, большинство библиотек Java было портировано, и большую часть времени имя любой как (Будьте в спящем режиме => NHibernate) или (Xstream => Xstream. Сеть). Не каждая библиотека имеет очевидное имя, поэтому только начинают изучать случайные, о которых Вы слышите здесь. т.е. (Носорог. Насмешки, HTMLAgilityPack, MBUnit, Носорог Палата общин, Проект Замка)
  8. Переходят к встречам группы пользователей, ищут DNUG (Точечная Сетевая Группа пользователей), они будут полезны, и можно получить некоторый хороший совет.
7
задан Greg 7 October 2009 в 06:28
поделиться

6 ответов

Используйте лямбда:

 Uri u = new Uri("www.test.com");
 CustomClass cc = this.files.Find(cc => cc.Path == u);

или, если вам все еще нужен именованный метод:

static bool matchesUri(CustomClass cc, Uri _u)
{
    return cc.Path == _u;
}

 Uri u = new Uri("www.test.com");
 CustomClass cc = this.files.Find(cc => matchesUri(cc, u));
12
ответ дан 6 December 2019 в 15:23
поделиться

Вы можете написать

CustomClass cc = this.files.Find( p=> p.Path == u );

Метод Find () возвращает null, если не было найдено ни одного элемента, соответствующего предикату.

1
ответ дан 6 December 2019 в 15:23
поделиться

Только для полноты, вот что вы бы сделали, если бы не хотели использовать лямбду:

// Predicate must be a method with a single parameter,
// so we must pass the other parameter in constructor

public class UriMatcher
{
    private readonly Uri _u;
    public UriMatcher(Uri u)
    {
        _u = u;
    }

    // Match is Predicate<CustomClass>
    public bool Match(CustomClass cc)
    {
        return cc.Path == _u;
    }
}

А затем используйте его как:

public void someMethod()
{
    Uri u = new Uri("www.test.com");
    UriMatcher matcher = new UriMatcher(u);
    CustomClass cc = this.files.Find(matcher.Match);
}

Обратите внимание, что вы передаете ссылку на метод , а не результат метода - Match vs Match () .

Также проверьте эту ветку: Предикатные делегаты в C # .

1
ответ дан 6 December 2019 в 15:23
поделиться
public void someMethod()
{
    Uri u= new Uri("www.test.com");
    CustomClass cc = this.files.find( p => { return p.Path == u; } );
}
0
ответ дан 6 December 2019 в 15:23
поделиться

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

0
ответ дан 6 December 2019 в 15:23
поделиться

Ответ .NET 2.0 с использованием анонимного делегата (обратите внимание, что это работает только для C #, VB.NET не имеет анонимных делегатов).

public void someMethod()
{
  Uri u= new Uri("www.test.com");
  CustomClass cc = this.files.find(delegate(CustomClass oTemp) { return oTemp.Path == u;});
}
0
ответ дан 6 December 2019 в 15:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: