L'unica cosa che non ho capito, è il compito di questa riga:

sw.WriteLine(testo.ElementAt(i));
Cosa fa?