Почему по языковой спецификации методы расширения С# не могут сделать тип "foreachable"?

При использовании типа как коллекции в предложении foreach тип должен иметь метод GetEnumerator, который возвращает объект с функцией MoveNext с логическим результатом и свойством Current. Обычно это реализуется путем реализации IEnumerable. Однако это не требуется.

В С#, GetEnumerator должен быть определен в самом типе коллекции.

В Vb.Net допускается дооснащение GetEnumerator с помощью методов расширения.

Почему не в С#?

Найдено путем переопределения классов .NET tuple в Vb.NET сначала и переведите на С# позже.

Пример кода: https://github.com/nicenemo/Noaber?files=1