これは失敗しますか? Resharperはこれを「変更されたクロージャへのアクセス」のインスタンスとして報告します ラムダはあらゆる値に対してトリガーされますか? first
の行が実行される前に、イテレータがすべての間隔値の完全なリストをthis
に生成していますか?または、リーチ反復のために行first = itvl;
が実行されていて、その後の反復のために使用されたfirst
の値が変更されましたか?変更されたクロージャへのアクセス
public HourInterval FirstInterval
{
get
{
var first = HourInterval.Make(DateTime.MaxValue);
foreach (var itvl in this.Where
(itvl => itvl < first))
first = itvl;
return first;
}
}
注意。 HourInterval
は、各時間長カレンダー時間を表す値型の構造体であり、...とthis
はHourInterval
オブジェクト
EDITのIEnumerable
集合である:
上記Resharperのは、LINQに変換することが示唆ものです以下foreach
建設からの発現は...
public HourInterval FirstInterval
{
get
{
var first = HourInterval.Make(DateTime.MaxValue);
foreach (var itvl in this)
if(itvl < first)
first = itvl;
return first;
}
}
あなたは 'return this.Min(itvl);'を実行できませんでしたか? – Carson63000
@Carson:いいえ、できません。 – SLaks