using System.Collections.Generic;
public static void Main()
foreach (var item in Zip("Rafael", "Ra"))
public static IEnumerable<(T1, T2)> Zip<T1, T2>(IEnumerable<T1> iterable1, IEnumerable<T2> iterable2)
IEnumerator<T1> Enumerator1 = iterable1.GetEnumerator();
IEnumerator<T2> Enumerator2 = iterable2.GetEnumerator();
bool moveNext1 = Enumerator1.MoveNext();
bool moveNext2 = Enumerator2.MoveNext();
if (!moveNext1 && !moveNext2)
T1 output1 = moveNext1 ? Enumerator1.Current : default(T1);
T2 output2 = moveNext2 ? Enumerator2.Current : default(T2);
yield return (output1, output2);