4

次のコードがどのように機能するかわかりません。具体的には、「return i<3」の使い方がわかりません。私はリターン i IF その < 3 を期待します。構文が何であるかさえわかりませんでした。

2 番目の質問は、匿名メソッド (delegate(int i)) を使用するように思えますが、メソッド elsewere を指す通常のデリゲートでそれを書くことは可能でしょうか? ありがとう

List<int> listOfInts = new List<int> { 1, 2, 3, 4, 5 };
List<int> result =
    listOfInts.FindAll(delegate(int i) { return i < 3; });
4

3 に答える 3

11

いいえ、return i < 3と同じではありませんif (i < 3) return;

代わりに、次と同等です。

bool result = (i < 3);
return result;

つまり、 の評価結果を返しますi < 3iたとえば、2の場合は true を返しますが、 i10 の場合は 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-30T09:08:29.813 に答える
1

ラムダ式を使用して例を作成することもできます。

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);
于 2010-04-30T11:30:13.337 に答える
1

returnステートメントは、あなたが言うように値を返すことしかできません。この例では、ステートメントi <3が最初にtrueまたはfalseのいずれかに評価され、ブール値が返されます。i<3は返されませんが、方程式の結果が返されます。

于 2010-04-30T09:09:50.287 に答える