谓词方法签名,Lambda表达式

时间:2011-03-23 13:22:26

标签: c# lambda

以下代码只是一个例子。字符串的谓词是a 我想知道下面的代码是否可能写得不那么简单:

    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 个答案:

答案 0 :(得分:1)

是的,可以写得更简单:

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

你的IsValid方法在这里绝对没有增加任何价值...如果您知道要传递给IsValid的谓词,为什么不能直接评估它而不是调用“帮助器” “方法?

答案 1 :(得分:1)

我个人认为尽可能将lambda作为最后一个参数更简洁,因为它使代码更容易阅读:

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

Validator.IsValue(foo,f=>f.Value==1);