首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Predicate<int>匹配问题

Predicate<int>匹配问题
EN

Stack Overflow用户
提问于 2010-04-30 17:05:41
回答 3查看 3.6K关注 0票数 4

我不明白下面的代码是如何工作的。具体地说,我不理解"return i<3“的用法。我期望返回i,如果它小于3,我总是认为返回的只是返回值。我甚至找不到它的语法。

第二个问题,在我看来像是使用匿名方法(委托(Int i)),但是可以使用指向其他方法的普通委托来编写它吗?谢谢

代码语言:javascript
复制
List<int> listOfInts = new List<int> { 1, 2, 3, 4, 5 };
List<int> result =
    listOfInts.FindAll(delegate(int i) { return i < 3; });
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-30 17:08:30

不,return i < 3if (i < 3) return;不一样。

相反,它等同于:

代码语言:javascript
复制
bool result = (i < 3);
return result;

换句话说,它返回i < 3的计算结果。因此,如果i为2,则返回true,例如,如果i为10,则返回false。

您绝对可以使用方法组转换来编写以下代码:

代码语言:javascript
复制
List<int> listOfInts = new List<int> { 1, 2, 3, 4, 5 };
List<int> result = listOfInts.FindAll(TestLessThanThree);

...
static bool TestLessThanThree(int i)
{
    return i < 3;
}
票数 11
EN

Stack Overflow用户

发布于 2010-04-30 17:09:50

return语句只能像您说的那样返回一个值。在本例中,语句i<3将首先计算为true或false,并返回布尔值,它不会返回i<3,而是方程式的结果。

票数 1
EN

Stack Overflow用户

发布于 2010-04-30 19:30:13

您还可以使用lambda表达式编写示例:

代码语言:javascript
复制
var listOfInts = new List<int> { 1, 2, 3, 4, 5 };
var result = listOfInts.FindAll(i => i < 3);

其他有趣的例子:

代码语言:javascript
复制
var listOfInts = new List<int> { 1, 2, 3, 4, 5 };
var all = listOfInts.FindAll(i => true);
var none = listOfInts.FindAll(i => false);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2743413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档