我不明白以下代码是如何工作的。具体来说,我不明白使用“return i< 3”。我希望返回i IF<我总是认为返回只返回值。我甚至找不到它的语法。
第二个问题,在我看来,使用匿名方法(委托(int i))但是可以用普通委托指向方法else来编写它吗?感谢
List<int> listOfInts = new List<int> { 1, 2, 3, 4, 5 };
List<int> result =
listOfInts.FindAll(delegate(int i) { return i < 3; });
答案 0 :(得分:11)
不,return i < 3
与if (i < 3) return;
不同。
相反,它相当于:
bool result = (i < 3);
return result;
换句话说,它返回i < 3
的评估结果。因此,如果i
为2,则返回true,但如果i
为10,则返回false。
你绝对可以使用方法组转换来写这个:
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;
}
答案 1 :(得分:1)
return语句只能返回你说的值。在这个例子中,语句i&lt; 3将首先被评估为true或false,并且将返回布尔值,它将不返回i <3,而是返回等式的结果。
答案 2 :(得分:1)
您也可以使用lambda表达式编写示例:
var listOfInts = new List<int> { 1, 2, 3, 4, 5 };
var result = listOfInts.FindAll(i => i < 3);
其他有趣的例子:
var listOfInts = new List<int> { 1, 2, 3, 4, 5 };
var all = listOfInts.FindAll(i => true);
var none = listOfInts.FindAll(i => false);