我不明白下面的代码是如何工作的。具体地说,我不理解"return i<3“的用法。我期望返回i,如果它小于3,我总是认为返回的只是返回值。我甚至找不到它的语法。
第二个问题,在我看来像是使用匿名方法(委托(Int i)),但是可以使用指向其他方法的普通委托来编写它吗?谢谢
List<int> listOfInts = new List<int> { 1, 2, 3, 4, 5 };
List<int> result =
listOfInts.FindAll(delegate(int i) { return i < 3; });发布于 2010-04-30 17:08:30
不,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;
}发布于 2010-04-30 17:09:50
return语句只能像您说的那样返回一个值。在本例中,语句i<3将首先计算为true或false,并返回布尔值,它不会返回i<3,而是方程式的结果。
发布于 2010-04-30 19:30:13
您还可以使用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);https://stackoverflow.com/questions/2743413
复制相似问题