は、次の点を考慮してくださいLINQと再帰
public class Box
{
public BoxSize Size { get; set; }
public IEnumerable<Box> Contents { get; set; }
}
Box FindBoxBySize(Box box, BoxSize size)
{
Box _foundBox = null;
Action<IEnumerable<Box>> _recurse = null;
_recurse = new Action<IEnumerable<Box>>(boxes =>
{
foreach (var _box in boxes)
{
if (_box.Size == size)
{
_foundBox = _box;
return;
}
if (_box.Contents != null) _recurse(_box.Contents);
}
});
_recurse(box.Contents);
return _foundBox;
}
はFindBoxBySize()
は、LINQを使用して圧縮することができるという方法はありますか?また、私のコードのコメントは大歓迎です。私は多くの再帰をしないので、私は私の実装で何かを逃したかもしれません。
と思います。しかし、私の休憩声明に気づく。可能な限り「ループ」することが本当に好きなので、一致が見つかるたびに終了したいと思います。 – roosteronacid
これはまだ間違っています。 OPには明らかに重要な「ヌル」に爆発する。第二に、実際には実際のボックスを生成することはありません。 – Ani
いいえ*実際の箱参照はいつ実際に得られますか? – Ani