Предикат в сигнатуре метода, лямбда-выражение - PullRequest
0 голосов
/ 23 марта 2011

Код ниже - только пример.Предикат строки: я задаюсь вопросом, может ли приведенный ниже код не быть написан проще:

    public static bool IsValid(Predicate<string> condition, string test)
    {
        return condition(test);
    }

И вызов:

Validator.IsValid(s => s.StartsWith("Test"), "Test with a lambda expression")

РЕДАКТИРОВАТЬ

Извините за отсутствие деталей.Приведенный выше код является лишь примером, но метод IsValid будет принимать параметр Predicate, а не Predicate, поэтому здесь подпись:

    public static bool IsValid(Predicate<T> condition, T obj)
    {
        return condition(obj);
    }

Ответы [ 2 ]

1 голос
/ 23 марта 2011

Лично я считаю, что по возможности лучше использовать лямбду в качестве последнего параметра, поскольку это облегчает чтение кода:

public static bool IsValid(T obj, Predicate<T> condition)
{
        return condition(obj);
}

Validator.IsValue(foo,f=>f.Value==1);
1 голос
/ 23 марта 2011

Да, его можно написать более просто:

"Test with a lambda expression".StartsWith("Test")

Ваш метод IsValid не добавляет здесь абсолютно никакого значения ... Если вы знаете предикат, который вы собираетесь передать IsValid,почему вы не можете оценить это напрямую вместо вызова «вспомогательного» метода?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...