Имеется ли IEnumerable Foreach Cache?

Предположим, что SomeMethod имеет подпись

public IEnumerable<T> SomeMethod<T>();

, есть ли разница между

foreach (T tmp in SomeMethod<T>()) { ... }

и

IEnumerable<T> result = SomeMethod<T>();

foreach (T tmp in result) { ... }

Другими словами, будут ли результаты SomeMethod кэшироваться в первом операторе или они будут оцениваться на каждой итерации?

5
задан Brian Kintz 14 July 2011 в 08:26
поделиться