私が以下を持っている場合:
static readonly TimeSpan ExpiredAfter = TimeSpan.FromMilliseconds(60000);
foreach (ModuleInfo info in moduleList.Where(i => DateTime.Now - i.LastPulseTime > ExpiredAfter).ToArray())
moduleList.Remove(info);
ExpiredAfterは解除されますか、それともコンパイラは直接アクセスできることを知っていますか?このように書く方が効率的でしょうか:
static readonly TimeSpan ExpiredAfter = TimeSpan.FromMilliseconds(60000);
static bool HasExpired(ModuleInfo i) { return DateTime.Now - i.LastPulseTime > ExpiredAfter; }
foreach (ModuleInfo info in moduleList.Where(HasExpired).ToArray())
moduleList.Remove(info);