2011-03-23 56 views
0

下面的代码仅仅是一个示例。字符串的谓词是 我想知道如果下面的代码可能不会更简单地写:方法签名中的谓词,Lambda表达式

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

和呼叫:

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

编辑

对不起,缺乏细节。上面的代码只是一个例子,但IsValid的方法将采取谓词参数,而不是一个谓语所以这里的招牌:

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

我很困惑。你问是否有更简单的方法来编写'return condition(test);'? – Gabe 2011-03-23 13:27:52

回答

1

我个人认为这是清洁剂把lambda作为最后一个参数,只要有可能,因为它使代码更易于阅读:

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

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

好的,谢谢你的提示;-) – Florian 2011-03-23 15:11:18

+0

它和以前的版本一样没用......为什么你需要一个方法来执行你提供给它的谓词?你也可以自己执行谓词 – 2011-03-24 16:36:12

1

是的,它可以更简单地写:

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

IsValid方法在这里绝对不会添加任何值......如果您知道将要传递给IsValid的谓词,为什么不直接对其进行评估而不是调用“帮助器”方法?

+0

这只是为了举例,但IsValid方法将采用谓词参数,而不是谓词。 – Florian 2011-03-23 14:17:15

+0

有什么区别?我说的仍然代表Predicate ... – 2011-03-23 15:03:12