Нет, в основном.Единственное использование для «B» - это когда TList
сам фактически является struct
;IL может затем использовать «ограниченный вызов» для вызова оригинального GetEnumerator()
без любой части, которая должна содержать оригинальное struct TList
значение.
Но: как только вы вызвали GetEnumerator()
, вы вернулись в IEnumerator<T>
земли, и он будет не использовать пользовательский итератор.
1016 * Все это в основном вопрос спорный в этом случае, потому что итератор блоки
также довольно "выделяют".Так что ... если вы избегаете бокса
TList
, это ваша забота, вы, вероятно, одержимы распределением: в этом случае вы также не напишите блок итератора таким образом.