3
A
回答
10
有几种使用情况可用于允许调用者提供返回true
或false
的功能。 Predicate<T>
类型是一种方法。这与Func<T, bool>
没有什么不同(除了早期版本的C#中提供了Predicate<T>
)。
一个简单的(和人为的例子):
string[] strings = new string[] { "hello", "goodbye", "how are you" };
Array.FindAll(strings, delegate(string s)
{
return s.StartsWith("h");
});
或,λ-样式:
Array.FindAll(strings, s => s.StartsWith("h"));
的FindAll
方法返回匹配条件的所有项目的阵列。在这种情况下,所有以“h”开头的字符串。 Predicate
是s.StartsWith("h")
。
这里有用的是,Array
类知道如何搜索其所有元素,并创建一个只包含匹配元素的新数组。该算法的这一部分对许多代码段都是通用的。不常见的部分是匹配标准,它将根据特定代码段的要求而有所不同。因此,调用者指定了该逻辑的一部分,并将其作为Predicate
传入。
你可以处理它的“嵌套”风格。 Func<Predicate<T>>
表示您声明的函数返回Predicate<T>
。你确定这是你想要的吗?你想达到什么目的?
0
它定义了一个返回谓词的函数(返回true或false的函数)。你怎么能用这个?您可以通过将其委托给另一个函数来移除返回给它的谓词的责任,谁的作业不是返回True或False,而是允许您在需要时延迟谓词的执行。
2
// Make a list of integers.
List<int> list = new List<int>();
list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 });
// Call FindAll() using traditional delegate syntax.
Predicate<int> callback = new Predicate<int>(IsEvenNumber);
List<int> evenNumbers = list.FindAll(callback);
// Target for the Predicate<> delegate.
static bool IsEvenNumber(int i)
{
// Is it an even number?
return (i % 2) == 0;
}
+0
优秀!谢谢老板。 – user160677 2009-08-22 06:39:33
相关问题
- 1. C++ is_str_empty谓词
- 2. 只能将谓词委托调用为布尔委托?
- 3. C#委派成员 - ReSharper的
- 4. 在C委派构造++()或{}
- 5. 如何结合c#谓词
- 6. C#中的谓词代表
- 7. 谓词<T>方法equals()方法
- 8. 约Func键<TElement,bool>的谓词
- 9. Spring Data + QueryDSL空谓词+谓词链接
- 10. Prolog谓词
- 11. C#委托词典添加
- 12. 你如何声明一个谓词委托内联?
- 13. 谓词的ArrayList
- 14. RDF词汇和谓词
- 15. 使用基于另一个谓词的谓词的谓词过滤数组,这是谓词的关键
- 16. 不兼容类型:谓词<CAP#1>不能转换为谓词<?超级CAP#2>
- 17. 结合纯谓词
- 18. PHFetchOptions mediaSubtype谓词
- 19. 检查谓词
- 20. 谓词NSNumber = 0
- 21. RealmSwift ALL谓词
- 22. IndexOf谓词?
- 23. SWI-Prolog谓词
- 24. NSFetchresultsController多谓词
- 25. Prolog powerset谓词
- 26. 使用谓词
- 27. 重写谓词
- 28. 组合谓词
- 29. 比较谓词
- 30. 比较谓词
谢谢!我已经知道VS2008的语法: MyList list; list.RemoveAll(l => l.Name ==“N/A”); 但我需要VS2005的语法,你的答案工作: list.RemoveAll(delegate(MyList l){return l.Name.StartsWith(“N/A”);}); – JohnB 2010-05-18 22:21:30